可能重复:
What is the difference between new/delete and malloc/free?
有人可以修改/编辑下面的内容 - malloc和new之间的区别 - 看看一切是否正确,或者我错过了什么或者出了什么问题?谢谢,
malloc
和new
都用于动态内存分配。
malloc
是C函数,而new
是C ++运算符。
malloc
在动态分配内存时需要特殊的类型转换,
而new
不需要任何类型转换。
每当我们使用new
分配内存时,它也会调用任何必需的构造函数,而malloc
则不会这样做。
malloc
可能会失败并返回NULL
指针,而new
永远不会返回NULL指针,但会通过抛出异常来指示失败。
使用malloc
时,free
是用于释放已分配内存的C函数。
使用new
时,delete
是用于释放已分配内存的C ++运算符,并调用任何所需的析构函数。
答案 0 :(得分:2)
需要注意和记住的重要事项:
placement new
delete[]
_set_new_handler()
功能答案 1 :(得分:2)
我想在您的差异中添加以下内容,
malloc“确实是分配内存并返回指针。无论出于何种原因,C语言的设计者将其实现为标准库函数。 另一方面,“new”是通过分配内存并调用适当的构造函数来实例化对象。对我来说似乎很合理,这个函数与简单分配存储的东西相比,更多地依赖于语言。
新的调用构造函数,而malloc()则没有。事实上,原始数据类型(char,int,float等)也可以用new初始化。
答案 2 :(得分:1)
看起来不错,但你可以强调一个事实,就是你永远不要将malloc
与delete
和new
与free
混合。
答案 3 :(得分:1)
不要忘记new[]
和delete[]
,分别用于数组分配和释放。