• 堆栈指针 ---delete 使用



    对拥有堆中一个有效对象的地址的指针进行删除操作的结果,是将这个堆内存的状态从“使用中” 变为“可用”(此时的可用就是指可以调用内存)释放了,可以再次覆盖此处;;
        对指针内存进行删除操作后,指针本身的状态就是未定义的;   
    *******可以是  大多数情况下:  依旧保存所删除的内存地址
     
    我们的delete 仅仅是调用了析构函数,进行对打开对象的调用。
     
     
     
     
     
       二,我们operator delete进行释放内存;;
     
    因此我们使用的内存,变为仅仅的可用,
    此时防止我们的误操作,我们一般将其定义为 NULL ;
    防止出现野指针,以及其他不能使用的内存地址使用的操作;;;  
      
     
       定义为 NULL 此时我们再操作(读取)此时的内存地址就会出现问题,但仅仅去赋值,赋予新的内存地址的时候,是不会存在问题的;
     
      虽然delete 仅仅也是释放掉内存,与tmp逝去联系,但是并没有干掉指针 p ,因此还是存在误使用 指针p的操作;;
     
     
     
     
         运行时错误的最多来源之一是内存泄露,如果程序分配了内存,但随后丢失了它的踪迹,导致既无法访问,又不能删除,没有被正确删除的对象,在进程终止之前将一直占据内存;;
       (通常指向一个内存块的时候,这个指针变量需要再次指向别的堆内存,那么我们需要先delete,释放原先指定的内存地址,防止出现丢失的内存);;; 。。。
     
                
     
     
     
        有些程序会长时间保持有效状态,假设这样的程序中包含一个经常要执行的例程,每次运行它时都会导致内存泄露,由于充满这些不可访问,未删除的内存块,堆会逐渐变得支离破碎,在某一刻,如果有例程需要大量的连续动态内存,就有可能拒绝这样请求,如果程序没有为处理这种事件做好准备,他就会中断
     
     
     
     
       当销毁指针成员的时候,默认析构函数不会删除所分配的内存
     
  • 相关阅读:
    P3图片导致iOS9.3以下崩溃问题
    [ios] 如何调用其他app h5界面调用打开app
    Swift学习中遇到的小坑
    代码行数统计(mac)
    路径专题 绝对路径 根路径 相对路径
    java.lang.StackOverflowError 解决办法
    Myeclipse运行提示错误: 找不到或无法加载主类 test.test1 终极解决办法
    myeclipse的最有用的设置
    关闭myeclipse可视化视图
    数据三大范式
  • 原文地址:https://www.cnblogs.com/vagabond/p/4996295.html
Copyright © 2020-2023  润新知