3-22使用delete释放内存空间

  1. 我们使用new分配的内存空间,如果我们不使用delete释放,那么内存是不会自动释放的,这样就会造成内存空间的泄露。如果这样的情况比较多,那么会造成系统的内存空间逐渐枯竭,从而导致程序的崩溃。

  2. 举例:

    • 分配一个内存空间

      int *n = new int;
      *n = 123;
      
    • 释放

      delete n;   
      
  3. 注意

    • delete只能释放使用new分配的内存空间,不能释放malloc以及类似的函数分配的内存空间

    • 对于普通变量,例如 int xyz = 100;之类的,当程序结束后,它所占用的内存空间将由系统自动回收,这类变量储存在栈上;而由我们动态分配的内存空间储存在堆上,需要我们手动释放。

    • delete以后,指针本身和指针指向的内存空间的数据不会被清空,除非再次写入数据。

    • 释放内存后的指针所指向的内存空间我们仍然可以赋值,但是具有一定的危险性,因为这段空间随时可能被其他所占用,所以尽量不要这样用。

    • int *xyz = 500;
      *n = 456;//尽量不要这样用,原因如上
      *n = &xyz//这个是没有问题的,xyz储存在栈上,程序结束前将一直占用该内存空间
      
    • 有多个指针指向了相同的内存空间,只要释放一个,其他的也会释放。

    • 对于已经释放了的指针所指向的内存空间,不能再次释放。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值