`malloc`和`new`之间的区别
可能重复:
new / delete和malloc / free有什么区别?
有人可以修改/编辑下面的内容 - malloc和new之间的区别 - 看看是否一切正确,或者我错过了什么或者出了什么问题? 谢谢,
malloc
和new
都用于动态内存分配。
malloc
是一个C函数,而new
是一个C ++操作符。
malloc
在动态分配内存时需要特殊的类型转换,而new
不需要任何类型转换。
每当我们使用new
来分配内存时,它也会调用任何需要的构造函数,而malloc
不会那样做。
如果内存耗尽, malloc
可能会失败并返回一个NULL
指针,而new
从不返回NULL指针,而是通过抛出异常来指示失败。
在使用malloc
, free
是用于释放分配内存的C函数。
在使用new
, delete
是C ++操作符,用于释放分配的内存并调用任何所需的析构函数。
重要的事情要记住并记住:
placement new
delete[]
_set_new_handler()
函数 我想添加以下与您的区别,
malloc“的作用是分配内存并返回一个指针,不管出于什么原因,C语言的设计者都将它实现为一个标准的库函数,另一方面,”new“是通过分配内存并调用合适的构造函数对我来说合理的是,这个函数与简单地分配存储的东西相比,与语言更紧密地联系在一起。
新的调用构造函数,而malloc()不。 事实上,原始数据类型(char,int,float等)也可以用new来初始化。
它看起来不错,但你可以强调的事实,你不应该混malloc
与delete
和new
与free
。