gpt4 book ai didi

c# - 将非托管内存复制到托管字节数组

转载 作者:行者123 更新时间:2023-11-30 13:50:05 24 4
gpt4 key购买 nike

我需要将非托管内存读入托管字节数组。

为此,我有一个对非托管内存的 IntPtr 引用和一个表示我感兴趣的非托管内存大小的长度。

我使用以下代码将其读入托管字节数组。

            byte[] pixelDataArray = new byte[pixelDataLength];
for (int i = 0; i < pixelDataLength; i++) {
pixelDataArray[i] = Marshal.ReadByte(pixelData, i);
}

然而,这会导致性能非常差。使用 256KB 的非托管内存调用此方法 1000 次,耗时超过 7 秒。我认为必须有一种更有效的方法来做到这一点。

我无法使用 Marshal.PtrToStructure,因为我不知道需要预先读取的内存大小。

关于如何改进此功能的性能有什么想法吗?

最佳答案

不要循环尝试 copying整个 block :

Marshal.Copy(pixelData, pixelDataArray, 0, pixelDataLength);

关于c# - 将非托管内存复制到托管字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7525047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com