C++ Malloc和new操作符分配内存的区别是什么?

C++ Malloc和new操作符分配内存的区别是什么?,c++,visual-c++,C++,Visual C++,可能重复: 当我在C++中使用new运算符创建对象时,我感到困惑。malloc和new操作符之间必须有区别,允许我调整内存块的大小。如果我想分配一个内存,我使用malloc,但是如果我使用一个新的操作符呢 难道它不分配内存吗?你能解释一下我什么时候应该使用malloc,什么时候应该使用new吗 X* ptr = new(1,2) X; obj = (ObjID *)malloc( sizeof(ObjID) ); 非常感谢。new分配内存,并为正在分配的类型调用类构造函数。new不仅为对象

可能重复:

当我在C++中使用new运算符创建对象时,我感到困惑。malloc和new操作符之间必须有区别,允许我调整内存块的大小。如果我想分配一个内存,我使用malloc,但是如果我使用一个新的操作符呢

难道它不分配内存吗?你能解释一下我什么时候应该使用malloc,什么时候应该使用new吗

X* ptr = new(1,2) X;

obj = (ObjID *)malloc( sizeof(ObjID) );

非常感谢。

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

new
不仅为对象分配内存,还将为创建的对象调用构造函数<代码> MaloC/将只给你分配一个给定大小的内存块,但不保证内容。C++中的

< P>你应该总是使用<代码>新< /代码>,并与<代码>删除< /C> >
  • 它调用对象的构造函数
  • 因为它是一个操作符,所以可以重载它
  • 它抛出异常,但有一个无异常的版本
  • 有一个“placement new”,允许您将对象放入已分配的内存中

malloc为您提供了原始内存,并留下了垃圾字节。New也在内部使用malloc。如果您只需要原始内存,请使用malloc。

我确实在上面找到了我的答案,谢谢。“New也在内部使用malloc”。不是真的。它可以使用malloc(并且经常使用),但可以使用其他方式来分配内存。它依赖于实现。