C# - 使用Marshal.Copy()缓冲区损坏

时间:2009-11-10 00:03:11

标签: c# marshalling intptr

我收到一个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模块的字符串引用。

有什么想法吗?谢谢!

0 个答案:

没有答案