这篇博文在半年以前就想写,但是网上有很多的答案,能够解决我所遇见的问题,加之自己对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.