-1

我试图从 c++/cli 终结器中清理非托管类的内存,它给了我 AcessViolation 错误。我做这样的事情:

MyClass::!MyClass()
{

    if(_unmanaged)
    {
    _unmanaged->Delete();
    _unmanaged = 0;
    }
}

有谁知道,有什么问题吗?感谢您的回答。

4

1 回答 1

0

好吧,我有一个猜测。

终结器在它自己的线程中工作,因此当您尝试手动处理对象时,可能会出现竞争条件。

我看到了您关于“已删除对象”的评论,但我会再次检查它。

MyClass::~MyClass()
{
   this->!MyClass();

   GC::KeepAlive(this);
}
于 2012-04-26T11:36:05.360 回答