new/delete和malloc/free的区别是什么?

相关(重复?):在什么情况下我使用malloc vs new?


当前回答

有几件事是new做的,malloc没有:

New通过调用该对象的构造函数来构造该对象 New不需要对已分配的内存进行类型转换。 它不需要分配大量的内存,而是需要大量的内存 要构造的对象。

因此,如果使用malloc,则需要显式地执行上述操作,这并不总是实际的。此外,new可以重载,但malloc不能。

总之,如果你使用c++,尽量使用new。

其他回答

同时,

全局的new和delete可以被覆盖,malloc/free不能。

此外,每个类型都可以重写new和delete。

要使用malloc(),我们需要包含<stdlib.h>或 <alloc.h>在程序中,这不是new. h所必需的。 New和delete可以重载,但malloc不能。 使用位置new,我们可以将地址传递到我们想要的位置 分配内存,但这在malloc的情况下是不可能的。

最相关的区别是,new操作符分配内存,然后调用构造函数,而delete操作符调用析构函数,然后释放内存。

new/delete是c++, malloc/free来自优秀的老C。

在c++中,new调用对象的构造函数,delete调用析构函数。

malloc和free来自于OO之前的黑暗时代,它们只分配和释放内存,而不执行对象的任何代码。

New调用对象的ctor, delete调用对象的dtor。

Malloc和free只是分配和释放原始内存。