delete和delete[]区别

之前一直以为 ,如果对于数组用delete删除,会造成内存泄露,但是实践证明,并不会造成内存泄漏,开始疑惑,这里总结下。

int* a=new int[10];
delete a;    // 可以删除10个内存空间,表示为无法读取内存
delete [] a;  //结果一致,内存空间被删除
delete [] a;

delete a;

new和delete运算符提供了一种比自动变量和静态变量更灵活的办法。

new运算符在自由存储空间(或堆)上创建变量。


如果使用new之后,没用调用delete,会怎么样?

如果没用调用delete,则即使包含指针的内存由于作用域规则和对象生命周期的原因而被释放,在自由存储空间(堆)上动态分配的变量和结构也将继续存在

实际上,将会无法访问自由存储空间中的结构,因为指向这些内存的指针无效。导致内存泄漏。

被泄露的内存在程序的整个生命周期内都不可使用;这些内存被分配出去,但无法收回。

程序的生命周期:暂时理解为程序的开始至结束之间。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值