Malloc 和 new 运算符分配内存有啥区别? [复制]

Posted

技术标签:

【中文标题】Malloc 和 new 运算符分配内存有啥区别? [复制]【英文标题】:what is the difference between Malloc and new operator to allocate a memory? [duplicate]Malloc 和 new 运算符分配内存有什么区别? [复制] 【发布时间】:2011-03-16 05:58:46 【问题描述】:

可能重复:What is the difference between new/delete and malloc/free?

当我在 C++ 中使用 new 运算符创建对象时,我感到很困惑。 malloc 和 new 运算符之间必须存在差异,这将允许我调整内存块的大小。如果我想分配内存,我会使用 malloc,但如果我使用 new 运算符呢?

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

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

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

非常感谢。

【问题讨论】:

这是真的,我在那里找到了我的答案,谢谢。 【参考方案1】:

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

它为对象调用构造函数。 由于是运算符,所以可以重载。 它会抛出异常,但有一个无异常版本。 有一个“新位置”,可让您将对象放入已分配的内存中。

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

【讨论】:

“New 在内部也使用了 malloc”。不对。它可能使用 malloc(并且经常这样做),但可以使用其他方式来分配内存。它取决于实现。

以上是关于Malloc 和 new 运算符分配内存有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

C++中new出得对象与C中的malloc出得有啥联系和区别?

malloc 和 new 的区别

new和malloc的区别

new和malloc的区别

new delete和mallocfree的解析及区别

关于 malloc 和 new 在各自处理内存分配的机制方面的区别? [复制]