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是否成功,需要捕获该异常。