我有一個字節數組,我想通過Int32指針(不安全的上下文)訪問。我這樣做不安全Int32指針字節[]數組
byte[] bgImageBytes = new byte[1000];
unsafe
{
fixed (byte* bgImgPtr = bgImageBytes)
{
// I have a byte pointer ... How can I get an Int32 pointer?
}
}
我已經訪問來自kernel32.dll中返回兩者字節和指針的Int32沒有任何問題的指針。但是當我嘗試在託管字節數組上創建一個Int32指針(上面的例子)時,它似乎抱怨它是託管的代碼,所以它不起作用。
只要做UInt32* bgImgIntPtr = (UInt32*)bgImgPtr;
導致MDA FatalExecutionEngineError:該CLR已致命地損壞。這通常是由數據損壞引起的,這可能是由許多問題引起的,例如調用格式錯誤的平臺調用函數以及將無效數據傳遞給CLR。
我的目標:將UInt32和Byte指針都指向單個字節陣列,這樣我就可以讀取整數和單獨顏色的Kinect「熱圖」。我知道我可以很容易地在類型之間進行轉換,但是由於我使用不同格式的多個數組,因此如果我可以直接訪問它們而不必在它們之間進行轉換,那將會更好。有很多簡單的複製進行,所以它只會增加開銷,繼續轉換。
是bgImageBytes實際上`新的字節[1000]`?還是被傳遞給非託管代碼? – Marlon 2011-01-30 13:16:01