我有一個C++/CLI(VS 2008)混合模式庫,用於創建本地對象並在那裏調用方法。本機DLL是用純C++編寫的。現在,在我的C++/CLI的包裝方法,如果我宣佈本機類的對象在C++的方式爲什麼我應該在混合模式下使用新的本地對象?
ClassA obj;
Obj.Method();
,並使用它,它的工作原理,但我得到System.AccessViolationException: Attempt to read or write protected memory
程序時存在。
但如果我這樣做,這樣
ClassA *obj = new ClassA();
Obj->Method();
它工作正常。 所以我的問題是爲什麼我不能在棧上聲明一個對象的C++方式?本地代碼中的 Destructor
被聲明爲虛擬。這是原因嗎?
我在那個角度嘗試了debugginb,刪除了第二種情況。並調用析構函數創建任何錯誤。我也寫了一個本地樣本來測試它。 – anivas 2010-10-22 11:30:07