我在程序中有一全局的CMap其中是放的自定义的结构体。这些结构体肯定在需要分配内存的,因为要一直使用。我的问题就是这个CMap中为结构体分配的内存,什么时候释放?是不是需要在程序结束的时候手动释放。能否不管呢,不管的话,程序关闭后,是不是也自动释放了?

解决方案 »

  1.   

    如果new过 肯定要自己delete~~
      

  2.   

    CMap如果放的内容不是你动态分配的内存的话,他自己会帮你释放,至于时候应该是在对象的析构函数中.
      

  3.   

    你没用new的话系统会帮你释放
      

  4.   

    如果是软件整个运行过程中不重复new的话,你就算不释放也没关系,不过,鉴于一些习惯,还是delete的好,不然内存泄露,这个也是要怀疑的~
      

  5.   

    因为我的理解,就算是NEW的空间,随着程序的关闭,也会被OS释放的。当然,可能不符合有NEW就有DELETE的习惯哈。
      

  6.   

    new 和 delete成对出现 这是个好习惯 
      

  7.   

    我觉得主要是看你在CMap这个类中有没有new过这个结构体,否者,必须在cmap的析构函数里delete,如果再cmap中,不是new得到的,那无需你释放
      

  8.   

    其实这个很简单  
    看变量的作用域就好了 
    如果是局部变量 执行完那段代码后就释放了 
    如果是全局的 或是new完没有delete 
    那么程序关闭的时候 操作系统会回收整个程序运行期间的内存放心用吧
      

  9.   

    其实这个很简单  
    看变量的作用域就好了 
    如果是局部变量 执行完那段代码后就释放了 
    如果是全局的 或是new完没有delete 
    那么程序关闭的时候 操作系统会回收整个程序运行期间的内存放心用吧
      

  10.   

    那我int a[10];
    我怎么没释放啊
      

  11.   

    new 出来的内存是在堆内存,不属于程序的私有空间,是公有的,程序退出后不会自动清除回收,所以要自己delete,否则你如果在循环体中NEW了很多空间后,会出现内存泄露;像int 之类定义的变量分配的空间是在程序自己所属的空间,程序退出后,操作系统会替你回收。要注意区别这个,希望对你有帮助~
      

  12.   

    我看了另一片帖子。
    说的不DELETE,os在程序关闭后,会被OS自动回收。除非其他进程还在使用的句柄等对象才不会自动回收的。
    我现在晕了。
      

  13.   

    查了些资料,我确定程序关闭后,new分配的空间如果不DELETE,一样会被OS释放掉哈。
    谢谢大家哈