我正在使用 C# 前端在 VS2010 中开发一个应用程序,该前端通过 C++/CLI 包装器使用本机 C++ DLL。我注意到仅在发布模式下发生的严重内存泄漏(或引用泄漏)。在调试模式下,应用程序的内存占用是稳定的。
我已将问题的根源缩小到视频播放循环,并且在某些时候我相当有信心视频数据没有被正确处理。但是,我想知道对于仅在发布模式下发生的泄漏,我应该特别注意什么。
对于它的价值,在有问题的 C++/CLI 类中,我正在实现此处介绍的 dispose/finalize 模式。
我正在使用 C# 前端在 VS2010 中开发一个应用程序,该前端通过 C++/CLI 包装器使用本机 C++ DLL。我注意到仅在发布模式下发生的严重内存泄漏(或引用泄漏)。在调试模式下,应用程序的内存占用是稳定的。
我已将问题的根源缩小到视频播放循环,并且在某些时候我相当有信心视频数据没有被正确处理。但是,我想知道对于仅在发布模式下发生的泄漏,我应该特别注意什么。
对于它的价值,在有问题的 C++/CLI 类中,我正在实现此处介绍的 dispose/finalize 模式。
如果我是你,我会寻找对类型构造中assert
或其他#ifdef _DEBUG/#endif
类型构造中的释放函数的调用。
浏览您的项目设置并检查所有运行时库。有时问题实际上不是您要链接到的运行时库本身,而是您在项目中设置为忽略的运行时库。
根据微软的这个页面,您必须仔细注意要忽略哪个库,具体取决于您使用的是哪个库。