有关内存泄露没泄露的问题

thulongkang 2012-07-26 12:08:08
这个问题我整理了一下,再问下各位,希望高人能说明白点。
我使用VS2010来编写一段代码,其中涉及到动态内存的分配,例如int *pt=new int[100];但是没有写delete语句。
问题(1)在debug模式(绿色按钮左边进行调整)下,我按F5,进行调试,如果我直接关闭黑框,那么编译器是不是会帮我回收这段内存?
在release模式(绿色按钮左边进行调整)下,我按F5,进行调试,如果我直接关闭黑框,那么编译器也是不是会帮我回收这段内存呢?求解释。

问题(2)如果我按F7,“生成解决方案”,是不是在两种模式下,都不会发生内存泄露?(这在VS2010中是不就是编译?)
问题(3)如果我没有进行调试,按ctrl+F5,是不是内存就泄露了啊?(这在VS2010中是运行)
...全文
120 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
晨星 2012-07-26
  • 打赏
  • 举报
回复
对于你说的所有情况,程序退出后操作系统都会帮你回收内存。
但你把“内存泄露”这个概念理解偏了,内存泄露指的不是程序退出之后内存不能归还系统,而是指程序运行期间该释放的内存由于没有及时释放,导致程序占用的内存越来越大,性能越来越差,甚至耗尽虚拟内存空间导致程序异常崩溃的情况。
毕竟在实际工作中,你需要完成的常常不是这种总共十来行,运行一下一闪就没了的小程序。你可能需要编写大型程序,而这样的程序可能需要长时间平稳运行,甚至一年到头不能间断。
或者举个简单例子,就说打字,如果字处理程序(比如Microsoft Word)在处理你输入的字符时存在内存泄露,那么你可能每隔半小时就需要重启一下程序,否则内存就不够用了。虽然程序关闭后,操作系统会回收所有内存,因而程序再次启动后又可以平稳运行一段时间,但每隔一段时间就需要重启一下,这种体验实在太差劲了。
漫步者、 2012-07-26
  • 打赏
  • 举报
回复
内存泄露是你的运行结束前,非法使用或者其他操作使用了系统给你分配你的内存,这就是内存泄露,还有,假如你的程序结束的时候,系统会给你收回你动态或者堆栈上分配的内存。
独孤过儿 2012-07-26
  • 打赏
  • 举报
回复
再补充下老大的解释:尤其是服务器类,或者数据库了的程序,需要7*24小时运行的,内存泄露危害就是致命的了

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧