浅谈 malloc/free 和 new/delete

malloc / free 和 new / delete 都是C/C++中重要的内存管理工具,它们有一些异同之处和使用时要特别留意的点。

相同点:

        用于申请动态内存和释放内存。

不同点:

        1、malloc / free 是C语言标准库函数,new / delete 是C++运算符;

        2、new / delete 会调用创建对象的构造函数和析构函数,malloc / free 则没有这一功能;

使用时应当注意:

        1、用malloc申请的内存,必须用free释放;同理,用new申请的内存,必须用delete释放;

        2、用delete释放内存时,要注意区分待释放的内存是单个实体还是一个数组,它们的释放语句不同,例如:

int *p_int = new int;          // p_int 指向的内存是单个int
delete p_int;
int *p_arrint = new int[100];  // p_arrint 指向的内存是一个拥有100个int的数组
delete [] p_arrint;
        3、不要傻傻地对同一个指针连续用多次 malloc、new 或多次 free、delete,前者会造成内存泄漏,后者会造成未知异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值