3 回答

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
不確定是否要將IntPtr放入數(shù)組,但是可以使用Mashal.Copy復(fù)制數(shù)據(jù)以供非托管代碼使用:
IntPtr unmanagedPointer = Marshal.AllocHGlobal(bytes.Length);
Marshal.Copy(bytes, 0, unmanagedPointer, bytes.Length);
// Call unmanaged code
Marshal.FreeHGlobal(unmanagedPointer);
另外,您可以聲明具有一個(gè)屬性的結(jié)構(gòu),然后使用Marshal.PtrToStructure,但這仍然需要分配非托管內(nèi)存。
編輯:另外,正如Tyalis指出的,如果不安全的代碼是您的選擇,那么您也可以使用固定的代碼

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊
其他方式,
GCHandle pinnedArray = GCHandle.Alloc(byteArray, GCHandleType.Pinned);
IntPtr pointer = pinnedArray.AddrOfPinnedObject();
// Do your stuff...
pinnedArray.Free();
- 3 回答
- 0 關(guān)注
- 1037 瀏覽
添加回答
舉報(bào)