2

首先,我分配内存并获取指针:

IntPtr pointer = Marshal.AllocHGlobal(size);

然后,我尝试释放指针指向的内存:

Marshal.FreeHGlobal(pointer);

但在我的应用程序中,它有时会引发一个致命的未知异常,仅此解释:“内存片段已损坏”。我想这是因为我试图通过释放另一个指针来释放一个指向已经释放的内存块的指针......

我的问题是:使用 IntPtr 指针,有没有办法检查内存块是否仍然被分配或已经被释放?

4

1 回答 1

0

释放指针的好方法是 Marshal.FreeHGlobal(),所以如果它被释放,这是一个逻辑问题,但你可以在 try/catch 中这样做,所以如果你进入 catch 异常,它已经被释放了。

于 2013-06-06T14:00:33.170 回答