我们使用malloc在C中分配内存,在C++中使用new分配内存.我知道分配的内存必须在C中使用free并在C++中使用free来释放或返回给OS.如果在分配内存后忘记使用free/delete,则表示存在内存泄漏.
现在,我的问题是,这个内存是否仅在程序执行期间泄漏; 或者它是永久性泄漏/丢失还是重新启动系统后再次获得?实际上内部过程是什么?内存泄漏/丢失究竟意味着什么?
如果有人能够详细解释这个问题或者给我一些不错的参考资料,我将非常感激.
更新1
在阅读了一些答案之后,我了解到程序终止后内存会返回给OS /系统,如果是这样,为什么每个人都需要关心内存泄漏,为什么防止内存泄漏非常重要?
更新2
因此,应该防止内存泄漏,以便系统不会因为缺乏足够的内存来分配崩溃?
更新3
因此,在阅读完所有答案之后,我意识到内存泄漏是安静的重要问题,以防止系统崩溃.但是,对于像我这样的初学者,我怎么能确定我的程序是否完全没有内存泄漏.我尝试自由,删除如果我使用malloc,新的但有时,它会变得混乱.是否有任何工具或方法可以用来知道我的程序是否有任何内存泄漏?
更新4
在阅读答案之后,我现在已经了解了内存泄漏代码的重要性,更少使用新/删除,更多地使用STL,学习了新的东西,如RAII,valgrind和良好的编程实践.谢谢大家 :)
为了好玩,我创建了一个创建了大约5 GB内存并且没有删除它的项目.只要应用程序正在运行,就会出现"内存泄漏".第二个我关闭我的应用程序2秒内的内存恢复正常,好像我的程序从未运行.所以必须提出问题.
Windows 7在完成后会清除坏程序的内存泄漏吗?
所有Windows版本都这样做吗?
Linux和Mac OS X环境会这样做吗?