new/delete和malloc/free的区别是什么?
相关(重复?):在什么情况下我使用malloc vs new?
new/delete和malloc/free的区别是什么?
相关(重复?):在什么情况下我使用malloc vs new?
当前回答
New是一个操作符,malloc()是一个函数。 New返回精确的数据类型,而malloc()返回void * (void类型指针)。 Malloc(),内存没有初始化,默认值是垃圾,而在new的情况下,内存用默认值初始化,就像int的情况下用'zero(0)'。 delete和free()都可以用于'NULL'指针。
其他回答
new/delete是c++, malloc/free来自优秀的老C。
在c++中,new调用对象的构造函数,delete调用析构函数。
malloc和free来自于OO之前的黑暗时代,它们只分配和释放内存,而不执行对象的任何代码。
同时,
全局的new和delete可以被覆盖,malloc/free不能。
此外,每个类型都可以重写new和delete。
New和delete是c++中的操作符;也可以重载。 Malloc和free是c中的函数;
Malloc返回空PTR失败时,而新的抛出异常。
由malloc返回的地址需要再次按类型转换,因为它返回(void*)malloc(size) 返回类型化指针。
1.New syntex比malloc()简单
2.New /delete是一个运算符,其中malloc()/free() 是一个函数。
3.New /delete执行速度比malloc()/free()快,因为编译器直接粘贴了新的程序集代码。
4.我们可以通过操作符重叠来改变程序中的new/delete含义。
New调用对象的ctor, delete调用对象的dtor。
Malloc和free只是分配和释放原始内存。