【发布时间】:2011-06-02 19:19:58
【问题描述】:
我在使用 Visual Studio 2010 的单元测试框架时遇到了一些问题。目前,QTAgent32 将在测试执行完成后维护对 DLL 的引用。
有问题的 DLL 是一些原生 c++ 代码的 c++/cli 包装器。包装器公开的对象实际上从未由托管代码分配。它所做的唯一参考是在处置期间的最终检查,以查看它是否已在类的生命周期内设置。
If(_obj != null)
{
_obj.Dispose();
_obj = null;
}
我知道这是一个事实,因为如果我单步执行代码并观察调试器控制台输出,我可以看到 DLL 的符号在点击 if 之前不会加载(这是有道理的)。所有涉及的托管对象都实现了 IDisposable 以确保所有本机对象都得到注意以避免内存泄漏。
基于这个问题:QTAgent32 Holding File Open 我确保没有显式打开文件流(包括控制台),甚至没有使用文件,但问题仍然存在。我已经没有什么想法了。
谁能帮忙?
TL;DR: QTAgent32.exe 保持对从未实例化的 c++/cli 包装器的开放引用。
【问题讨论】:
标签: visual-studio-2010 unit-testing dll c++-cli