Game Engine Architecture 中文翻译:2.4 内存泄漏和坏内存
译者:杨漱玉青
一直困扰C和C++程式员的两个问题是内存泄漏和坏内存.内存泄漏的情况发生在申请了内存却从未释放,这导致了内存浪费甚至严重的会导致内存溢出.坏内存的情况发生在程序试图在错误的内存地址上写入数据,覆盖掉原本在那里的重要数据,这也会导致原本该写入数据的地方没有被写入.这两个问题的原因是众所周知的指针.
指针是一个强大的工具,她可以成为一个方便好用的数据代理,当然如果正确使用的话。当然她也很容易成为魔鬼的代理。如果一个指针指向一个已经被释放掉的内存空间,或者指向一片分配的时候非零的空间的时候,她就会变成一个会导致坏内存的危险工具。同样的,一片被申请的内存实在太容易忘记将她释放了,于是她会导致内存泄漏。
要明白良好的编程习惯是避免这类问题的解决方法,写出坚固的代码是不会导致此类问题的。但是,如果有一个工具能够帮助你直接检测内存泄漏和坏内存,那么这类问题解决起来就容易多了。感谢上帝,有太多这类工具可以选择了。
我最爱的是IBM的Rational Purify的Purify Plus套件。Purify会对每一个指针进行钩子监控,会监控所有的内存申请和内存释放情况。当你通过Purify运行你的程式的时候,你可以得到一份实时的内存报告,这份报告真实而精确。当内存问题存在的时候,你可以得到内存泄漏的细节报告。每个问题报告都可以直接链接到根源代码,这会让你解决这些问题变得容易很多。
另外一个流行的工具叫做Bounds Checker,是CompuWare做的。这和Purify有类似的用法和功能。
译者注:我个人使用的是Visual Leak Detector,这是一款开源免费的Visual Studio插件,可以指定到内存泄漏的代码,很是好用。

顶玉玉~
果断沙发
嘿嘿,谢谢啦~~