我收到一个IntPtr和一个int,指定它指向的字节数。数据可以包含任何字符,包括null,EOL等。尝试以下操作时,缓冲区已损坏:
//buffer is the IntPtr
//count is the number of bytes in 'buffer'
byte[] test = new byte[count];
Marshal.Copy(buffer, test, 0, count);
IntPtr ptr = IntPtr.Zero;
ptr = Marshal.AllocCoTaskMem(count);
Marshal.Copy(test, 0, ptr, count);
我认为'缓冲'和'ptr'将指向不同内存位置的相同缓冲区blob,但它们不会(我只是将相同的数据复制到另一个mem位置AFAIK)。但是,'ptr'似乎指向一个任意的内存位置,因为它包含对DLL模块的字符串引用。
有什么想法吗?谢谢!