C++的 new 和 malloc 区别是什么?

文章探讨了C++中new和delete运算符与C语言中malloc和free函数在内存分配和管理上的差异,包括new自动计算内存大小、初始化、异常处理、构造函数和析构函数的调用,以及delete对析构函数的调用。malloc/free则不支持这些高级功能且不能被重载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • new/delete 是 C++ 的运算符,编译时需要加参数,malloc/free 是 C 语言中的函数,编译时需要头文件的支持
  • new 返回指定类型的指针,并且可以自动计算所需要大小,而 malloc 则必须要由我们计算字节数,并且在返回后强行转换为实际类型的指针
  • malloc 只管分配内存,并不能对所得的内存进行初始化,而 new 可以对所得到的内存进行初始化
  • new 在分配内存失败时会抛出异常,而 malloc 在分配失败的时候会返回 NULL
  • new 会调用构造函数,而 malloc 不会调用构造函数
  • delete 会调用析构函数,而 free 不会调用析构函数
  • new/delete 都可以被重载,而 malloc/free 都不可以被重载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值