我一直在使用pointer = new type[size]
一段时间,最近才发现malloc
。
malloc
和new
之间是否存在技术差异?如果是这样,使用一个优于另一个有什么好处?
答案 0 :(得分:3)
malloc
是一个函数调用,在本例中是一个新的表达式。
区别在于; new
将使用默认构造函数分配内存并构造该数组的所有元素。 malloc
只是给了一大块未初始化的记忆。
此外,::operator new
会抛出std::bad_alloc
或新的处理程序(如果已注册)。
标准库定义了一个新的接受另一个参数nothrow
的新参数,如果分配失败,它将返回0指针。
int *x = new(std::nothrow) int[20]; // include <new>, return 0 on failure
答案 1 :(得分:2)
您可以在问题here
中找到常见问题解答