码迷,mamicode.com
首页 > 编程语言 > 详细

C++ new 和malloc 区别

时间:2018-10-19 23:40:18      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:分配   不同   地址   nbsp   ++   void   抛出异常   初始化   内存地址   

1.分配地方不同,malloc是堆上面,new是自由存储区域

2.malloc/delete是函数,new/delete是操作符,可以重载

3.malloc 要指定大小,返回的是void*指针,开辟的是空空间,失败返回NULL

   new有类型检测,编译器会自动计算大小,还会初始化空间,返回的是类指针,失败抛出异常

   (int* p = new(std::nothrow) int;)可以避免抛出异常,返回NULL

4.new底层是调用malloc来实现的

5. new[] /delete[],一个个分配,一个个释放, 而malloc/free 处理数组的时候 一次处理完成,free(p),在p的前面1个内存地址存储需要释放的空间大小

/////////////////////////////////////////////////////////

malloc 的实现,有时间再更新。

C++ new 和malloc 区别

标签:分配   不同   地址   nbsp   ++   void   抛出异常   初始化   内存地址   

原文地址:https://www.cnblogs.com/sofard/p/9819712.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!