系统粉 > 电脑问答 > 其他问答

已解决请问内存泄露如何调试

提问者:yura_sakura  |  浏览次  |  提问时间:2016-12-20  |  回答数量:3

请问内存泄露如何调试手动检测当使用 C/C++ 进行开发时,采用良好的一致的编程规范是防止内存问题第一道也是最重要的措施。检测是编码标准的补充。二者各有裨益,但结合使用效果特别好。专业的 C 或 C+...

已有3条答案
过往的羁绊

过往的羁绊

回答数:80850  |  被采纳数:17

手动检测

当使用 C/C++ 进行开发时,采用良好的一致的编程规范是防止内存问题第一道也是最重要的措施。检测是编码标准的补充。二者各有裨益,但结合使用效果特别好。专业的 C 或 C++ 专业人员甚至可以浏览不熟悉的源代码,并以极低的成本检测内存问题。通过少量的实践和适当的文本搜索,您能够快速验证平衡的 *alloc() 和 free() 或者 new 和 delete 的源主体。人工查看此类内容通常会出现像清单 1 中一样的问题,可以定位出在函数 LeakTest 中的堆变量 Logmsg 没有释放。
2016-12-20 14:57:23
赞 8085
温温的暖暖小姐

温温的暖暖小姐

回答数:11295  |  被采纳数:1

你好,据我了解如下:
内存泄漏形象的比喻是“操作系统可提供给所有进程的存储空间正在被某个进程榨干”,最终结果是程序运行时间越长,占用存储空间越来越多,最终用尽全部存储空间,整个系统崩溃。所以“内存泄漏”是从操作系统的角度来看的。这里的存储空间并不是指物理内存,而是指虚拟内存大小,这个虚拟内存大小取决于磁盘交换区设定的大小。由程序申请的一块内存,如果没有任何一个指针指向它,那么这块内存就泄漏了。
希望我的回答对你有所帮助。望采纳!
2016-12-20 15:49:09
赞 1129
玩世谁恭

玩世谁恭

回答数:40648  |  被采纳数:1

内存泄露:有可能是你自己代码写的不好,忘记了释放自己代码里申请的内存, 也有可能是你使用了一个写的不好的库,库本身有问题,这里说的库不仅仅是第三方库,甚至于各种语言的运行时库也有可能出现(再高的人都免不了出BUG),还甚至于操作系统的库,因为操作系统的BUG也多的很(当然系统一般情况不会出现这些低级的错误)。 死循环不能说是内存泄露,概念上应称为死锁,死锁的确是有可能会导致内存无限量增长,但其与内存泄露有本质区别,尽管有时候它们导致的结果在内存层面是相同的。
希望对你有所帮助
2016-12-21 12:31:14
赞 4064
相关问答
最新其他问答
解决方法