4
我正在用「安全」代碼對IntPtr進行試驗,並將其與「不安全」模式下的事情進行比較。GCHandleType.Pinned與使用「fixed」關鍵字類似嗎?
GCHandleType.Pinned類似於在不安全模式下使用「fixed」嗎?
GCHandle pinnedArray = GCHandle.Alloc(byteArray, GCHandleType.Pinned);
IntPtr pointer = pinnedArray.AddrOfPinnedObject();
//do your stuff
pinnedArray.Free();
VS
byte[] buffer = new byte[255];
fixed (byte* p = buffer)
{
IntPtr ptr = (IntPtr)p;
// do you stuff here
}