首先,我分配内存并获取指针:
IntPtr pointer = Marshal.AllocHGlobal(size);
然后,我尝试释放指针指向的内存:
Marshal.FreeHGlobal(pointer);
但是在我的应用程序中,它有时会引发一个致命的未知异常只是这个解释:"内存碎片已被损坏"。我想这是因为我试图通过释放另一个指针来释放指向已经解除分配的内存块的指针...
我的问题是:使用IntPtr指针,有没有办法检查内存块是否仍然已分配或已经解除分配?
答案 0 :(得分:0)
释放指针的好方法是Marshal.FreeHGlobal(),所以如果它被解除分配,这是一个逻辑问题,但是你可以在try / catch中执行它,所以如果你进入catch异常它已经被解除分配