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

C++内存分配new和malloc的区别

时间:2017-09-01 18:17:25      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:编写   区别   分配   new   let   强制类型转换   异常   构造函数   类对象   

这里有一篇讲的很详细new和malloc的区别

总结一下:

1.new/delete是操作符,malloc/free是函数

2.malloc分配内存需指定大小,且只能是一般数据类型,分配成功返回void*,需要强制类型转换,分配失败返回NULL,需手动检查是否分配成功;new分配内存无需指定大小,可以为类对象,分配成功返回特定类型指针,分配失败抛出异常。

3.new分配内存,一般类型可以指定初始化,未初始化的保留其在内存中的原值;对象会调用其默认构造函数,也可以指定构造函数。

4.delete对象的指针时会调用其析构函数,而free则无法调用;delete指针之后一般还保留其原来的内存地址,再次使用出错,所以delete完之后需要赋值为NULL。

5.C++保留malloc的原因是C++有时需要使用C编写的库,而C中只能使用malloc,如果使用new会出现错误。

C++内存分配new和malloc的区别

标签:编写   区别   分配   new   let   强制类型转换   异常   构造函数   类对象   

原文地址:http://www.cnblogs.com/InitialD/p/7464343.html

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