C语言的malloc和C++中的new有什么区别?
new 、delete 是操作符,可以重载,只能在C++ 中使用。malloc、free 是函数,可以覆盖,C、C++ 中都可以使用。
new 可以调用对象的构造函数,对应的delete 调用相应的析构函数。
malloc 仅仅分配内存,free 仅仅回收内存,并不执行构造和析构函数
new 、delete 返回的是某种数据类型指针,malloc、free 返回的是void 指针。
「注意」:malloc 申请的内存空间要用free 释放,而new 申请的内存空间要用delete 释放,不要混用。 在new一个对象的时候,首先会调用malloc为对象分配内存空间,然后调用对象的构造函数。delete会调用对象的析构函数,然后调用free回收内存。 估计单片机上也很少能用到c++语言啊 new、delete 是操作符,可以重载;malloc、free 是函数,可以重写(覆盖)。
使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算;使用malloc则需要显式地指出所需内存的尺寸。
new、delete 返回的是某种数据类型指针;malloc、free 返回的是 void 指针
new从自由存储区上分配内存,malloc从堆上分配内存
页:
[1]