首页 文章

最简单的COM Interop应用程序泄漏内存 - 我做错了什么?

提问于
浏览
1

C#

namespace TestController  
{  
    [ComVisible(true)]   
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IController {  
        void DoSomething();
    }  

    [ComVisible(true), ClassInterface(ClassInterfaceType.None)]  
    public class ControllerImpl : IController {  
        public void DoSomething()  
        {  
            throw new NotImplementedException();  
        }  
    }
}

C

#import "c:\prj\Controller\bin\Debug\TestController.tlb"  

using namespace TestController;  

int _tmain(int argc, _TCHAR* argv[])
{
    IControllerPtr ctrl;
    CoInitializeEx(NULL, COINIT_MULTITHREADED);
    while (true) {
        HRESULT hr = ctrl.CreateInstance(__uuidof(ControllerImpl));
        ctrl = 0;
    }
    return 0;
}

大家好,
我需要从非托管代码提供对我的.NET类库的访问 . Beeing对这个主题完全陌生,我花了几天研究COM / interop,然后定义并实现了一个COM可访问的界面,进行了测试运行,一切正常,直到我注意到一些看似内存泄漏的东西 . 我隔离了有问题的陈述,但仍然不知道为什么上面的代码被破坏了 .

1 回答

相关问题