Malloc和new运算符分配内存有什么区别?

时间:2010-07-15 06:46:06

标签: c++ visual-c++

  

可能重复:
  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) );

非常感谢。

4 个答案:

答案 0 :(得分:4)

在C ++中,您应始终使用new并将其与delete配对。

  • 它调用对象的构造函数。
  • 由于它是操作员,因此可能会过载。
  • 它抛出了异常,但是有一个无例外的版本。
  • 有一个“placement new”,它允许您将对象放入已分配的内存中。

答案 1 :(得分:2)

new分配内存并调用您正在分配的类型的类构造函数。

答案 2 :(得分:2)

new不仅会为对象分配内存,还会在创建的对象上调用构造函数。 malloc只会为您分配给定大小的内存块,而不保证内容。

答案 3 :(得分:1)

malloc为您提供了剩余垃圾字节的原始内存。 New也在内部使用malloc。如果你需要原始内存,请使用malloc。