首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C++中的"new“、"malloc”和"calloc“有什么区别?

C++中的"new“、"malloc”和"calloc“有什么区别?
EN

Stack Overflow用户
提问于 2009-04-30 16:47:59
回答 3查看 95.7K关注 0票数 56

"new“、"malloc”、"calloc“和其他家庭成员的区别是什么?

(何时)除了"new“之外,我还需要其他东西吗?

它们中的一个是使用其他实现的吗?

EN

回答 3

Stack Overflow用户

发布于 2009-04-30 16:51:54

除了新的东西,你不需要任何东西。它完全替代了C++中的malloc。

至于区别: Malloc只是分配内存。新分配的内存,并调用构造函数。同样,free只是释放内存。Delete释放内存并调用析构函数。

一句警告:不要把这两个习惯用法混在一起。结果是不确定的。

票数 6
EN

Stack Overflow用户

发布于 2009-04-30 16:50:04

使用new意味着将在新分配的内存上调用构造函数。如果要分配的对象没有构造函数,new在功能上与malloc相同。通常应该根据它来使用。

新的可能在malloc方面实现,也可能不实现- C++标准不需要这两种方法。

票数 5
EN

Stack Overflow用户

发布于 2009-04-30 16:51:30

我记得new和malloc之间的主要区别是您不能使用realloc重新分配new分配的内存。因此,如果你想增加/减少内存块的大小,你必须分配一个新的块并复制所有内容。

Calloc允许您初始化分配的内存块,而malloc不允许。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/807939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档