[問題] Wrapper Class for Unmanaged Code的Dispose

看板C_Sharp作者 (大招出盡)時間18年前 (2008/01/20 23:23), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
我用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
文章代碼(AID): #17asTcE1 (C_Sharp)