看一本书上讲,堆上的内存在释放时,是切断指向内存的的指针与这块内存的联系,那这块内存里面的数据怎么处理了?就这样不管了,等待下一次数据覆盖?还是有其他方法?在栈上的和静态区的是一样的吗?

解决方案 »

  1.   

    delete只是把内存归还给操作系统,上面的数据还在上面,指针原来指向的那块内存的值没有变。直到重新分配使用。
      

  2.   

    堆上的内存,只把所指的指针设为NULL会有内存泄露,使用delete就不会
      

  3.   

    切断的方法是delete或者free。而windows回收内存后,会检查内存边界相关的参数,并重新放回堆内。当然此时的内存内容通常会被覆盖为0xcc,当你下一次再分配时,堆会再为你分配合适的内存。