作者sedc (大招出尽)
看板C_Sharp
标题[问题] Wrapper Class for Unmanaged Code的Dispose
时间Sun Jan 20 23:23:15 2008
我用C++/CLI写了个Wrapper Class来包装一个C++的CLASS C,大致如下:
public ref class MgdC
{
public:
MgdC();
~MgdC();
protected:
!MgdC();
private:
C* m_pC;
};
其中 ~MgdC()的内容是
~MgdC()
{
if(m_pC!= NULL)
delete m_pC;
}
最後编出来dll档後,~MgdC()则会变成Dispose()
但是我在C#的CODE中呼叫Mgd.Dispose()时,会发生Access Violation Exception,
说「尝试读取或写入受保护的记忆体。这通常表示其他记忆体已损毁。」
用google查了一下,会发生Access Violation Exception的类似情况好像都是没有实作
Dispose(),但是到了C++/CLI後应该是不需要再另外实作了吧,因为Compiler会帮它编出
一个Dispose()来呼叫~MgdC()或!MgdC()。 所以目前还是不知道问题出在哪里,还请板
上的高手前辈们能解答 感激不尽 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.194.235