可能重复:
What is the difference between new/delete and malloc/free?
当我在C ++中使用new运算符创建对象时,我感到很困惑。 malloc和new运算符之间必须有区别,这样我才能调整内存块的大小。如果我想分配一个内存我使用malloc但是如果我使用一个新的运算符怎么办?
不是它分配内存吗?你能解释一下,当我使用malloc时,我应该何时使用new?
X* ptr = new(1,2) X;
obj = (ObjID *)malloc( sizeof(ObjID) );
非常感谢。
答案 0 :(得分:4)
在C ++中,您应始终使用new
并将其与delete
配对。
答案 1 :(得分:2)
new
分配内存并调用您正在分配的类型的类构造函数。
答案 2 :(得分:2)
new
不仅会为对象分配内存,还会在创建的对象上调用构造函数。 malloc
只会为您分配给定大小的内存块,而不保证内容。
答案 3 :(得分:1)
malloc为您提供了剩余垃圾字节的原始内存。 New也在内部使用malloc。如果你需要原始内存,请使用malloc。