我试图从c ++ / cli终结器清理非托管类的内存,它给了我AcessViolation错误。我做这样的事情:
MyClass::!MyClass()
{
if(_unmanaged)
{
_unmanaged->Delete();
_unmanaged = 0;
}
}
有谁知道,问题是什么?谢谢你的回答。
答案 0 :(得分:0)
好的,我有一个猜测。
Finalizer从它自己的线程开始工作,所以当你试图手动处理你的对象时,可能会出现竞争条件。
我看到你对“已经删除的对象”的评论,但我会再次检查。
MyClass::~MyClass()
{
this->!MyClass();
GC::KeepAlive(this);
}