每日一C之new与malloc
每天拾一个C语言贝壳,厚积薄发,积跬步以致千里。
今日贝壳:C/C++中new/delete与malloc/free小辨析
区别: 1.new/delete是C++运算符,malloc/free是C函数。
2.new同时调用构造函数,delete时调用析构函数。
3.malloc/free开辟的空间类型为void,需强制转换类型,如
int *p=(int *)
malloc
(
sizeof
(int)*4);
4.new开辟的空间带有类型信息,不需再类型转换,如
int *p=
new int[4]
;
共同点:1.两者都是动态内存的方法,均需开发者自行开辟与释放。
2.两者开辟的空间都是在堆区。
小结:C/C++可以说已经融为一体了。程序使用了类的情况下,malloc/free往往不能满足要求,其释放内存前需手动调用析构函数,new/delete可以为开发者减轻不少负担。
Have a nice day !