打印
[其它应用]

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

[复制链接]
2056|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
duo点|  楼主 | 2024-3-4 21:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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 是函数,可以重写(覆盖)。

使用特权

评论回复
5
wakayi| | 2024-4-2 22:14 | 只看该作者
使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算;使用malloc则需要显式地指出所需内存的尺寸。

使用特权

评论回复
6
renzheshengui| | 2024-4-2 22:46 | 只看该作者
new、delete 返回的是某种数据类型指针;malloc、free 返回的是 void 指针

使用特权

评论回复
7
paotangsan| | 2024-4-2 23:18 | 只看该作者
new从自由存储区上分配内存,malloc从堆上分配内存

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

428

主题

1602

帖子

1

粉丝