[問題] Wrapper Class for Unmanaged Code的Dispose
我用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