我需要將非託管內存讀入托管字節數組。將非託管內存拷貝到託管字節數組
爲此,我有一個IntPtr對非託管內存的引用和一個表示我感興趣的非託管內存大小的長度。
我使用以下代碼將其讀入托管字節數組中。
byte[] pixelDataArray = new byte[pixelDataLength];
for (int i = 0; i < pixelDataLength; i++) {
pixelDataArray[i] = Marshal.ReadByte(pixelData, i);
}
但是,這會導致性能很差。使用256KB非託管內存調用此方法1000次需要7秒以上。我認爲必須有一個更有效的方式來做到這一點。
我無法使用Marshal.PtrToStructure,因爲我不知道需要預先讀取的內存大小。
有關如何改進此功能的性能的任何想法?
cool!謝謝。現在只需要380毫秒。 ! – Santhosh
@Santhosh:這並不奇怪。收集數據並不便宜。 –