使用malloc Versus new

时间:2010-12-08 17:24:48

标签: c++ memory pointers malloc new-operator

我一直在使用pointer = new type[size]一段时间,最近才发现malloc

mallocnew之间是否存在技术差异?如果是这样,使用一个优于另一个有什么好处?

2 个答案:

答案 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

中找到常见问题解答

另一个好的答案: In what cases do I use malloc vs new?