-1

可能重复:
new/delete 和 malloc/free 有什么区别?

有人可以修改/编辑下面的 - malloc 和 new 之间的区别 - 看看一切是否正确,或者我是否遗漏了什么或有什么问题?谢谢,

两者mallocnew用于动态内存分配。

malloc是 C 函数,而new是 C++ 运算符。

malloc动态分配内存时需要特殊的类型转换,new而不需要任何类型转换。

每当我们new用于分配内存时,它也会调用任何所需的构造函数,malloc而不会这样做。

mallocNULL如果内存耗尽,可能会失败并返回一个指针,而new从不返回 NULL 指针,而是通过抛出异常来指示失败。

使用malloc时,free是用于释放分配内存的 C 函数。

使用new时,delete是用于释放分配的内存并调用任何必需的析构函数的 C++ 运算符。

4

4 回答 4

1

需要注意和记住的重要事项:

  1. placement new
  2. delete[]
  3. _set_new_handler()功能
于 2010-11-23T11:20:49.343 回答
1

我想添加以下内容与您的不同之处,

  1. malloc”的作用是分配内存并返回一个指向它的指针。无论出于何种原因,C 语言的设计者将其实现为标准库函数。另一方面,“new”是通过分配内存并调用适当的构造函数。在我看来,这个函数与语言的联系比简单地分配存储的东西要紧密得多。

  2. new 调用构造函数,而 malloc() 不调用。事实上,原始数据类型(char、int、float.. 等)也可以用 new 初始化。

于 2010-11-23T11:23:29.733 回答
0

看起来不错,但您可以强调一个事实,即您永远不应该mallocdeletenewwith混合使用free

于 2010-11-23T11:22:28.087 回答
0

不要忘记new[]and delete[],分别用于数组分配和释放。

于 2010-11-23T11:22:31.717 回答