C++中new与malloc的区别

2018-11-07  本文已影响0人  mingzhi618

reference: https://www.cnblogs.com/QG-whz/p/5140930.html

特征 new/delete malloc/free

分配内存的位置       自由存储区                                     堆

内存分配成功的返回值 完整类型指针                                   void*

内存分配失败的返回值 默认抛出异常                                   返回NULL

分配内存的大小       由编译器根据类型计算得出                     必须显式指定字节数

处理数组               有处理数组的new版本new[]               需要用户计算数组的大小后进行内存分配

已分配内存的扩充     无法直观地处理                               使用realloc简单完成

是否相互调用           可以,看具体的operator new/delete实现   不可调用new

分配内存时内存不足   客户能够指定处理函数或重新制定分配器         无法通过用户代码进行处理

函数重载               允许                                           不允许

构造函数与析构函数   调用                                           不调用

上一篇下一篇

猜你喜欢

热点阅读