"new
“、"malloc
”、"calloc
“和其他家庭成员的区别是什么?
(何时)除了"new
“之外,我还需要其他东西吗?
它们中的一个是使用其他实现的吗?
发布于 2009-04-30 16:51:54
除了新的东西,你不需要任何东西。它完全替代了C++中的malloc。
至于区别: Malloc只是分配内存。新分配的内存,并调用构造函数。同样,free只是释放内存。Delete释放内存并调用析构函数。
一句警告:不要把这两个习惯用法混在一起。结果是不确定的。
发布于 2009-04-30 16:50:04
使用new意味着将在新分配的内存上调用构造函数。如果要分配的对象没有构造函数,new在功能上与malloc相同。通常应该根据它来使用。
新的可能在malloc方面实现,也可能不实现- C++标准不需要这两种方法。
发布于 2009-04-30 16:51:30
我记得new和malloc之间的主要区别是您不能使用realloc重新分配new分配的内存。因此,如果你想增加/减少内存块的大小,你必须分配一个新的块并复制所有内容。
Calloc允许您初始化分配的内存块,而malloc不允许。
https://stackoverflow.com/questions/807939
复制相似问题