2

我收到一个 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);  

我会假设'buffer'和'ptr'将指向不同内存位置中的同一个缓冲区blob,但它们没有(我只是将相同的数据复制到另一个内存位置AFAIK)。但是,'ptr' 似乎指向任意内存位置,因为它包含对 DLL 模块的字符串引用。

有任何想法吗?谢谢!

4

0 回答 0