【发布时间】:2011-01-14 23:26:58
【问题描述】:
我最近一直在搞乱SFML,一个多媒体库。我使用 C#,所以我很自然地选择了 .Net 绑定,您可以从最新的 2.0 版本的 SVN 中获取该绑定。经过一段时间的折腾,我注意到我的应用程序有时会在使用 Text 对象(用于绘制纹理字体的对象)时挂起。
通过使用分析器和全能的 Windows 任务管理器进行的进一步调查显示,使用 Text 的简单应用程序似乎以某种方式泄漏了内存。然后我在 SFML 论坛上发了一个帖子(the thread)。但是,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
谢谢!
【问题讨论】:
-
忘了说,好像是垃圾回收相关的问题。
-
我很好奇...从 C++ 的角度来看,使用结构作为类的占位符而不是使用类有什么不同...只是浏览代码,我就想到了...
标签: c# memory memory-leaks unmanaged-memory