簡體   English   中英

此IntPtr是否指向已分配的非托管內存?

[英]Is this IntPtr pointing to allocated unmanaged memory or not?

首先,我分配內存並獲取指針:

IntPtr pointer = Marshal.AllocHGlobal(size);

然后,我嘗試釋放指針指向的內存:

Marshal.FreeHGlobal(pointer);

但是在我的應用程序中,有時僅給出以下解釋就會引發致命的未知異常:“內存碎片已損壞”。 我猜這是因為我試圖通過釋放另一個指針來釋放一個指向已分配的內存塊的指針...

我的問題是:使用IntPtr指針,是否有任何方法可以檢查內存塊是否仍在分配或已經被分配?

釋放指針的好方法是Marshal.FreeHGlobal(),因此,如果取消分配指針,這是一個邏輯問題,但是您可以在try / catch中完成它,因此如果遇到catch異常,則已經分配了指針。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM