0、malloc和new都是在堆上开辟内存空间的。
1、malloc不初始化开辟的空间,需要用户自己初始化;new 开辟空间会对开辟的空间进行初始化;new是通过malloc实现的,如果是new 一个类,这里的初始化就是调用类的构造函数。
2、malloc与free是C++/C语言的标准库函数,开辟空间时需要传入所开辟空间的大小,开辟空间时不指定数据类型,返回void*,开辟空间后需要用户转换成所存数据类型;new/delete是C++的运算符,开辟空间时需要指定数据类型,用户不需要进行类型转换。
3、malloc失败后返回NULL,new失败后会抛出bad_alloc异常,如果需要检查new是否成功,需要捕获该异常。
本文详细对比了C++中malloc和new的功能差异:malloc不初始化内存,new则进行初始化;malloc和free属于C/C++标准库,new/delete为C++运算符,自动类型转换;malloc失败返回NULL,new失败抛出bad_alloc异常。
6495

被折叠的 条评论
为什么被折叠?



