我开发了一个由主可执行文件和动态库(dll)组成的应用程序。它们都是由我开发的,并且在Windows 10 Pro上使用相同的编译器(仅供参考:两者都包含在相同的VS解决方案中)构建。
当我想使用MS CRT库测试可执行文件和库是否存在内存泄漏时。我可以检测可执行文件中的内存泄漏,但不能检测动态库中的内存泄漏(我故意用一个未删除的整数泄漏)。
可执行文件是使用MDd构建的,库是使用MTd构建的。我也尝试使用MTd构建可执行文件但没有成功。 (由于其依赖性,库必须用MT(d)构建)。另外请注意,我并不是说我有较小的内存泄漏报告(比如没有文件名和行),我的意思是没有dll的报告应该至少有一个。
问题是,是否有人遇到此问题并知道如何解决问题。
答案 0 :(得分:0)
您的DLL没有使用MFC?然后就出现了问题,MFC中的内存泄漏检测会覆盖自己的分配器中的本机C ++,并使用Microsoft文档中提到的宏。我担心你必须在.LL中重新实现跟踪方法,如果它没有使用它.crt lib与_CRTDBG_MAP_ALLOC跟踪malloc,不接触本地operator new
。< / p>
答案 1 :(得分:0)
Johannes Passing在他的博客文章中提到,当DLL链接到CRT的静态版本时,正确的内存转储就是DllMain的DLL_PROCESS_DETACH
案例。