我的Windows程序包含
C ++(MFC)控制台应用程序 my.exe ,它会发出_CrtSetDbgFlag以查看退出时的内存泄漏。
C ++(非MFC) my.dll 。这个dll称为第三方库(Oracle' s OCCI C ++库)。
my.exe在main()函数中故意泄漏: new char [333];
当程序退出时,我会看到这些泄漏: -
检测到内存泄漏! 转储对象 - > ... myExe.cpp(62):{384}正常阻塞位于0x0087C4B0,333字节长。
但是,如果我调用第三方库中的某些功能,则退出时不会报告任何泄漏。也就是说,我可以从我的dll调用一些occi函数,但是一旦我调用occi函数实际连接到数据库(看起来效果很好),那么我的所有泄漏报告都会消失,好像没有泄漏。 / p>
我怀疑这种情况正在发生,因为虽然我正在使用正确版本的oracle的occi dll,但它使用的是oracle的低级别oci.dll,它似乎使用旧版本的MSVC运行时。依赖步行者显示:
MY.EXE
MSVCR100D.DLL
MY.DLL
MSVCR100D.DLL
ORAOCCI11D.DLL
MSVCR100D.DLL
OCI.DLL
MSVCR80.DLL
感谢您提出任何意见。