从固定对象获取字节数组

本文关键字:字节 字节数 数组 获取 对象 | 更新日期: 2023-09-27 17:50:38

可以从托管数组中获取指针

byte [] buffer = new byte[length + byteAlignment];
GCHandle bufferHandle = GCHandle.Alloc(buffer, GCHandleType.Pinned);
IntPtr  ptr = bufferHandle.AddrOfPinnedObject();

是否有相反的方法?从固定对象获得字节数组而不复制?

从固定对象获取字节数组

当然,这就是Marshal.Copy的作用-没有办法(好吧,没有办法不复制一些品种)在托管和非托管状态之间获得内存…好吧,这不是100%正确,但我假设你不想仅仅依靠Win32/C和p/invoke来复制内存。

Marshal.Copy的用法如下:

IntPtr addressOfThing = ....;
byte[] buffer = new byte[...];
Marshal.Copy(addressOfThing, buffer, 0, bufferSize);