相关疑难解决方法(0)

C,C++中的内存泄漏; 忘了做免费,删除

我们使用malloc在C中分配内存,在C++中使用new分配内存.我知道分配的内存必须在C中使用free并在C++中使用free来释放或返回给OS.如果在分配内存后忘记使用free/delete,则表示存在内存泄漏.

现在,我的问题是,这个内存是否仅在程序执行期间泄漏; 或者它是永久性泄漏/丢失还是重新启动系统后再次获得?实际上内部过程是什么?内存泄漏/丢失究竟意味着什么?

如果有人能够详细解释这个问题或者给我一些不错的参考资料,我将非常感激.

更新1

在阅读了一些答案之后,我了解到程序终止后内存会返回给OS /系统,如果是这样,为什么每个人都需要关心内存泄漏,为什么防止内存泄漏非常重要?

更新2

因此,应该防止内存泄漏,以便系统不会因为缺乏足够的内存来分配崩溃?

更新3

因此,在阅读完所有答案之后,我意识到内存泄漏是安静的重要问题,以防止系统崩溃.但是,对于像我这样的初学者,我怎么能确定我的程序是否完全没有内存泄漏.我尝试自由,删除如果我使用malloc,新的但有时,它会变得混乱.是否有任何工具或方法可以用来知道我的程序是否有任何内存泄漏?

更新4

在阅读答案之后,我现在已经了解了内存泄漏代码的重要性,更少使用新/删除,更多地使用STL,学习了新的东西,如RAII,valgrind和良好的编程实践.谢谢大家 :)

c c++

35
推荐指数
4
解决办法
2万
查看次数

Windows 7清理C++内存泄漏?

为了好玩,我创建了一个创建了大约5 GB内存并且没有删除它的项目.只要应用程序正在运行,就会出现"内存泄漏".第二个我关闭我的应用程序2秒内的内存恢复正常,好像我的程序从未运行.所以必须提出问题.

Windows 7在完成后会清除坏程序的内存泄漏吗?

所有Windows版本都这样做吗?

Linux和Mac OS X环境会这样做吗?

c++ linux windows macos memory-leaks

9
推荐指数
2
解决办法
2227
查看次数

标签 统计

c++ ×2

c ×1

linux ×1

macos ×1

memory-leaks ×1

windows ×1