我最近一直在搞乱SFML,一个多媒体库。我使用 C#,所以我很自然地选择了 .Net 绑定,您可以从最新 2.0 版本的 SVN 中获取该绑定。搞砸了一段时间后,我注意到我的应用程序有时会在使用 Text 对象时挂起,这是一个用于绘制纹理字体的对象。
通过使用分析器和全能的 Windows 任务管理器进行的进一步调查显示,使用 Text 的简单应用程序似乎以某种方式泄漏了内存。然后我在 SFML 论坛上发表了一个关于它的帖子(主题)。但是,SFML 的主要开发人员无法在他的机器上重现该错误。我想我不可能疯了,我把它发给了一个朋友,他报告说他确实看到了它的发生。
我为 SFML 的开发者 Laurent 做了一个例子,但他仍然无法重现这个错误。考虑到这可能与操作系统有关,我将文件发送给我能找到的每个人,并询问他们的操作系统。这是我的结果:
http://spreadsheets.google.com/ccc?key=0AhcHeJlLGEVUdG1TTi1mTkFxeFlHYVRISXhjbFBDUmc&hl=en
如您所见,Turc 和 K7 都具有相同的操作系统,但它不会在 K7 上崩溃(该表不完整,测试候选人尚未报告)。无论如何,这告诉我这显然不是操作系统问题。
所以我的实际问题是,除了操作系统或架构之外,还有哪些其他因素会影响此类仅出现在某些系统上的错误?
供参考,这里是我发给朋友的文件:http: //dl.dropbox.com/u/3310651/MemLeak2.rar
以及我所做的分析截图:http: //dl.dropbox.com/u/3310651/sfml_memleak.png
谢谢!