gpt4 book ai didi

c# - 这个 IntPtr 是否指向分配的非托管内存?

转载 作者:太空宇宙 更新时间:2023-11-03 16:12:30 25 4
gpt4 key购买 nike

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

IntPtr pointer = Marshal.AllocHGlobal(size);

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

Marshal.FreeHGlobal(pointer);

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

我的问题是:使用 IntPtr 指针,有什么方法可以检查内存块是否仍在分配或已经被取消分配?

最佳答案

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

关于c# - 这个 IntPtr 是否指向分配的非托管内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16963934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com