Łuk*_*Lew 51 c++ heap malloc memory-management
"new"和"malloc"和"calloc"和其他家庭有什么区别?
(何时)除了"新"之外我还需要什么?
其中一个是否使用其他任何一个实现?
Meh*_*ari 71
new并且delete是C++特有的功能.他们不存在于C. malloc是旧学校C做事的方式.大多数情况下,您不需要在C++中使用它.
malloc分配未初始化的内存.分配的内存必须与释放free.calloc就像是malloc用常量(0)初始化分配的内存.它需要被释放free.new通过调用构造函数(如果它是一个对象)初始化分配的内存.分配的内存new应该与delete(它反过来调用析构函数)一起释放.它不需要您手动指定所需的大小并将其强制转换为适当的类型.因此,它更现代,更不容易出错.Bri*_*ndy 20
new/delete + new []/delete []:
malloc /免费+家庭:
另请参阅我的相关答案
正如其他帖子所指出的那样:malloc/free是C++与C兼容的一部分.
小智 5
使用new意味着将在新分配的内存上调用构造函数.如果正在分配的东西没有构造函数,则new在功能上与malloc相同.并且通常应该用于引用它.
新的可能会或可能不会实现malloc - C++标准不需要任何一种方法.
你不需要除了新的东西.它完全取代了C++中的malloc.
至于区别:Malloc只分配内存.新分配的内存并调用构造函数.同样免费只是释放内存.删除释放内存并调用析构函数.
警告:不要混淆两个成语.结果未定义.
| 归档时间: |
|
| 查看次数: |
90907 次 |
| 最近记录: |