new、delete分配空间的长度信息是如何保存的?
《高质量C++编程指南》7.6节还有这样一段话:如果程序终止了运行,一切指针都会消亡,动态内存会被操作系统回收。
那么在退出程序时还有释放内存空间的必要吗?

解决方案 »

  1.   

    个人拙见:
        指针消亡是指指向那块内存地址的变量(指针消失了),但是那块内存并没有被我们释放,还在系统里占用,且其他程序不能使用。Stack中的数据会被自动收回(系统负责),但是用new分配的heap上的东西不能自动收回(c or c++),需要程序本身收回。   个人理解有限,抛砖引玉,请大家执教!
      

  2.   

    堆栈,都是系统提供给我们的,方便我门程序变量动态分配,如果不释放,而是占用的话,
    那其他的程序也就无法在继续了,我记得NEW好象是在堆中分配的,我认为。个人意见,堆栈
    也不是一定,是有系统动态的为他们指定大小,要不规定大小,所有的程序中设计的变量
    都不一定呀
    小弟肤浅,请指教
      

  3.   

    WindowsNT系统中采用段页式内存管理,系统为每一个进程维护一张页表,所以系统在进程退出时会参照页表释放所有该进程的内存。
      

  4.   

    很显然,
    infernalphoenix(地狱凤凰)的解释非常正确;
    woaini5994(坚持到底)的解释不仅含糊不清,而且有些概念不清;
    binarier(沙子)的解释答非所问。