问个很傻的问题!!! 我在程序中有一全局的CMap其中是放的自定义的结构体。这些结构体肯定在需要分配内存的,因为要一直使用。我的问题就是这个CMap中为结构体分配的内存,什么时候释放?是不是需要在程序结束的时候手动释放。能否不管呢,不管的话,程序关闭后,是不是也自动释放了? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果new过 肯定要自己delete~~ CMap如果放的内容不是你动态分配的内存的话,他自己会帮你释放,至于时候应该是在对象的析构函数中. 你没用new的话系统会帮你释放 如果是软件整个运行过程中不重复new的话,你就算不释放也没关系,不过,鉴于一些习惯,还是delete的好,不然内存泄露,这个也是要怀疑的~ 因为我的理解,就算是NEW的空间,随着程序的关闭,也会被OS释放的。当然,可能不符合有NEW就有DELETE的习惯哈。 new 和 delete成对出现 这是个好习惯 我觉得主要是看你在CMap这个类中有没有new过这个结构体,否者,必须在cmap的析构函数里delete,如果再cmap中,不是new得到的,那无需你释放 其实这个很简单 看变量的作用域就好了 如果是局部变量 执行完那段代码后就释放了 如果是全局的 或是new完没有delete 那么程序关闭的时候 操作系统会回收整个程序运行期间的内存放心用吧 其实这个很简单 看变量的作用域就好了 如果是局部变量 执行完那段代码后就释放了 如果是全局的 或是new完没有delete 那么程序关闭的时候 操作系统会回收整个程序运行期间的内存放心用吧 那我int a[10];我怎么没释放啊 new 出来的内存是在堆内存,不属于程序的私有空间,是公有的,程序退出后不会自动清除回收,所以要自己delete,否则你如果在循环体中NEW了很多空间后,会出现内存泄露;像int 之类定义的变量分配的空间是在程序自己所属的空间,程序退出后,操作系统会替你回收。要注意区别这个,希望对你有帮助~ 我看了另一片帖子。说的不DELETE,os在程序关闭后,会被OS自动回收。除非其他进程还在使用的句柄等对象才不会自动回收的。我现在晕了。 查了些资料,我确定程序关闭后,new分配的空间如果不DELETE,一样会被OS释放掉哈。谢谢大家哈 求救 vc2008 sp1 SubclassWindow(m_hWndMDIClient) 出错 新手求教 关于数据库的问题 多线程计算加法,答案老不正确 如何判断一个listctrl中的item是否被选中? 关于CMap的问题,总有错误,请知道的兄弟进来看看! ?????????????????????????????????????????????? 我的vc6.0为什么不能很好的支持msdn 4月版? DoFieldExchange用法求解 上位机与下位机串口通信问题 com组件接口参数可以有默认值么? 帮帮我吧!already defined in .obj 在线等,高分!
看变量的作用域就好了
如果是局部变量 执行完那段代码后就释放了
如果是全局的 或是new完没有delete
那么程序关闭的时候 操作系统会回收整个程序运行期间的内存放心用吧
看变量的作用域就好了
如果是局部变量 执行完那段代码后就释放了
如果是全局的 或是new完没有delete
那么程序关闭的时候 操作系统会回收整个程序运行期间的内存放心用吧
我怎么没释放啊
说的不DELETE,os在程序关闭后,会被OS自动回收。除非其他进程还在使用的句柄等对象才不会自动回收的。
我现在晕了。
谢谢大家哈