【发布时间】:2010-12-08 17:24:48
【问题描述】:
我使用pointer = new type[size] 有一段时间了,最近才发现malloc。
malloc 和 new 之间是否存在技术差异?如果是这样,使用一个比另一个有什么优势?
【问题讨论】:
标签: c++ memory pointers malloc new-operator
我使用pointer = new type[size] 有一段时间了,最近才发现malloc。
malloc 和 new 之间是否存在技术差异?如果是这样,使用一个比另一个有什么优势?
【问题讨论】:
标签: c++ memory pointers malloc new-operator
malloc 是一个函数调用,在这种情况下是一个新的表达式。
区别在于; new 将分配内存并使用默认构造函数构造该数组的所有元素。 malloc 只是归还了一块未初始化的内存。
此外,::operator new 将抛出 std::bad_alloc 或一个新的处理程序(如果已注册)。
标准库定义了一个新参数,它接受另一个参数nothrow,如果分配失败,则返回一个 0 指针。
int *x = new(std::nothrow) int[20]; // include <new>, return 0 on failure
【讨论】:
pointer = new int[20],我可以预期整数都为零,但如果我决定使用malloc,这些值可能是垃圾?
还有一个很好的答案: In what cases do I use malloc vs new?
【讨论】: