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 运算符分配内存有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章