C/C++中的动态内存分配

C++基础(2)

new/delete 和 malloc/free之间的关系和使用

  • 性质和作用
    new/delete和malloc/free都是可以用来申请动态内存的,malloc/free是c函数库的函数
    void *malloc(size_t size)
    void free(void *prt)
    而new/delete是C++里面的运算符
  • 区别
    malloc/free只会为我们申请一块动态内存,在实例化一个对象时不会调用类对象的构造函数,以及释放内存时不会调用析构函数。new/delete在实例化和释放对象时会分别调用构造函数和析构函数,由于类对象的属性可能存在使用时申请的动态内存,一般会在析构函数中进行判断和释放,在使用free后只会对对象的内存进行释放,不能调用析构函数,就会存在内存泄漏的风险。
  • 使用delete和delete[]
    在释放单个动态内存时使用delete,而在new了一个数组后,在释放时应该使用delete[],不仅是为了增加程序的可读性,而且会更加安全和可预期。
  • 总结
    在C++中,建议统一使用new/delete,而在C语言中,也要注意使用malloc/free,申请了内存记得释放,否则很容易存在内存泄露。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值