Tôi có hai giá trị IntPtr
trỏ đến một số vùng dữ liệu của length
byte. length
có thể có thứ tự từ 200k đến 400k.Sao chép dữ liệu từ từ IntPtr sang IntPtr
int length = /* ..*/
IntPtr ptrSrc = /*.. */;
IntPtr ptrDst = /* .. */;
Bây giờ tôi muốn sao chép dữ liệu từ ptrSrc
đến ptrDst
. Mã này hoạt động tốt:
byte[] data = new byte[length];
Marshal.Copy(ptrSrc, data, 0, length);
Marshal.Copy(data, 0, ptrDst, length);
nhưng có nhược điểm là cần thêm một mảng tạm thời (có khả năng lớn). Thật không may, tôi không thể tìm thấy biến thể Marshal.Copy
trong khuôn khổ .NET để sao chép trực tiếp từ IntPtr
đến IntPtr
, vì vậy tôi đang tìm kiếm các giải pháp thay thế.
Tôi quan tâm đến một giải pháp hoạt động trên 32 Windows cũng như Windows 64 bit. Bất kỳ đề xuất?
Bạn có thể sử dụng 'không an toàn' không? – driis
@driis: vâng, điều đó là có thể. –