我正在使用GCHandle :: FromIntPtr將非託管結構指針轉換爲託管對象引用,請參見msdn中的示例。以下是我的代碼片段:我應該釋放從GCHandle :: FromIntPtr返回的句柄嗎?
GCHandle gch = GCHandle::FromIntPtr(IntPtr(someNativePtr));
MyManagedClass^ obj = static_cast<MyManagedClass^>(gch.Target);
我的問題是我應該自由gch?
UPDATE: 有一個巨大的問題,在這個問題上,正如Medinoc在他的評論中提到:的GCHandle :: FromIntPtr可以不接受一個IntPtr指向非託管對象!所以這個問題完全沒有意義。
@Medinoc,thx,我在哪裏可以找到剛剛提到的文檔? – SimonFisher
@ Medinoc,我不認爲msdn的例子真的意味着我們只能使用FromIntPtr和ToIntPtr返回的intptr。 – SimonFisher
MSDN文檔並沒有說你可以從一個隨機的IntPtr中毫不費力地創建一個GCHandle,它甚至不指向一個託管對象。它說你可以將GCHandle轉換爲IntPtr並將其轉換回GCHandle,以便通過非託管函數(通過定義只接受指針或intptr_t類型)將其作爲上下文傳遞。 – Medinoc