`malloc`和`new`之间的区别

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

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

mallocnew都用于动态内存分配。

malloc是一个C函数,而new是一个C ++操作符。

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

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

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

在使用mallocfree是用于释放分配内存的C函数。

在使用newdelete是C ++操作符,用于释放分配的内存并调用任何所需的析构函数。


重要的事情要记住并记住:

  • placement new
  • delete[]
  • _set_new_handler()函数

  • 我想添加以下与您的区别,

  • malloc“的作用是分配内存并返回一个指针,不管出于什么原因,C语言的设计者都将它实现为一个标准的库函数,另一方面,”new“是通过分配内存并调用合适的构造函数对我来说合理的是,这个函数与简单地分配存储的东西相比,与语言更紧密地联系在一起。

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


  • 它看起来不错,但你可以强调的事实,你不应该混mallocdeletenewfree

    链接地址: http://www.djcxy.com/p/13771.html

    上一篇: Differences between `malloc` and `new`

    下一篇: Confusing with delete and free function in C++