这篇博文在半年以前就想写,但是网上有很多的答案,能够解决我所遇见的问题,加之自己对OSG和MFC的理解浅薄,所有就一直没有动笔,但是这周又遇见了OSG和MFC结合报内存泄露的问题,解决的方法和以前的一样,但是由此引发的问题貌似网上没有给出有效的解决方法,所以在前辈的基础上写点东西,希望能够帮上遇见同样问题的朋友们。
OSG和MFC结合造成表面上的内存泄露,其实是一种假象,真正是没有内存泄露的。那为什么会出现这样的问题,根据前辈们的解释如下:由于在MFC的dll卸载时会调用内存检测函数,此时OSG的dll也许并没有卸载掉,这样就会被检测到new的对象没有释放,也就出现了开始的内存泄露不止。具体的参考此博客文章(谢谢这位仁兄):http://blog.sina.com.cn/s/blog_4bef16b901015ffx.html。那解决的办法自然是将MFC的dll先于OSG的dll加载,这样卸载是就在OSG的dll后面卸载,这样在卸载MFC的dll是检测内心泄露,而OSG的dll早卸载掉,自然就没有报内存泄露,方法如下:
Goto project settings. In there, make the following changes for theDebug build.
General->Use

本文探讨了OSG嵌入到MFC应用中出现内存泄露的假象,实际上是由于MFC DLL卸载时检测到OSG DLL中未释放的对象。解决方法是调整MFC项目的配置,使其先于OSG加载,并确保添加正确的MFC库依赖。然而,这样做可能会导致崩溃或链接错误。对于崩溃问题,需确保添加的库与字符集匹配;对于链接错误,可通过指定不同入口函数解决。
最低0.47元/天 解锁文章
2418

被折叠的 条评论
为什么被折叠?



