duo点 发表于 2024-3-4 21:23

C语言的malloc和C++中的new有什么区别?

new 、delete 是操作符,可以重载,只能在C++ 中使用。
malloc、free 是函数,可以覆盖,C、C++ 中都可以使用。
new 可以调用对象的构造函数,对应的delete 调用相应的析构函数。
malloc 仅仅分配内存,free 仅仅回收内存,并不执行构造和析构函数
new 、delete 返回的是某种数据类型指针,malloc、free 返回的是void 指针。
「注意」:malloc 申请的内存空间要用free 释放,而new 申请的内存空间要用delete 释放,不要混用。

tpgf 发表于 2024-4-2 15:05

在new一个对象的时候,首先会调用malloc为对象分配内存空间,然后调用对象的构造函数。delete会调用对象的析构函数,然后调用free回收内存。

xiaoqizi 发表于 2024-4-2 15:44

估计单片机上也很少能用到c++语言啊

wowu 发表于 2024-4-2 21:42

new、delete 是操作符,可以重载;malloc、free 是函数,可以重写(覆盖)。

wakayi 发表于 2024-4-2 22:14

使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算;使用malloc则需要显式地指出所需内存的尺寸。

renzheshengui 发表于 2024-4-2 22:46

new、delete 返回的是某种数据类型指针;malloc、free 返回的是 void 指针

paotangsan 发表于 2024-4-2 23:18

new从自由存储区上分配内存,malloc从堆上分配内存
页: [1]
查看完整版本: C语言的malloc和C++中的new有什么区别?