У меня есть библиотека смешанного режима C ++ / CLI (VS 2008), которая затем создает собственные объекты и вызывает методы.Родной dll написан на чистом с ++.Теперь в моих методах-оболочках C ++ / CLI, если я объявляю объект нативных классов в c ++ как
ClassA obj;
Obj.Method();
и использую его, он работает, но я получаю System.AccessViolationException: Attempt to read or write protected memory
, когда программа существует.
Но если я сделаю это так
ClassA *obj = new ClassA();
Obj->Method();
, то все будет работать нормально.Поэтому мой вопрос: почему я не могу объявить объект только в стеке способом C ++?Destructor
в нативном коде объявлен виртуальным.Это причина?