Ho due valori IntPtr
che indicano alcune aree di dati di length
byte. length
potrebbe avere un ordine di grandezza compreso tra 200k e 400k.Copia dati da IntPtr a IntPtr
int length = /* ..*/
IntPtr ptrSrc = /*.. */;
IntPtr ptrDst = /* .. */;
Ora voglio copiare i dati ptrSrc
-ptrDst
. Questo codice funziona correttamente:
byte[] data = new byte[length];
Marshal.Copy(ptrSrc, data, 0, length);
Marshal.Copy(data, 0, ptrDst, length);
ma ha lo svantaggio di aver bisogno di un ulteriore array temporaneo (potenzialmente enorme). Purtroppo, non sono riuscito a trovare una variante Marshal.Copy
nel framework .NET per copiare direttamente da IntPtr
a IntPtr
, quindi sono alla ricerca di alternative.
Sono interessato a una soluzione che funziona su Windows 32 e Windows a 64 bit. Eventuali suggerimenti?
È possibile utilizzare 'non sicuro? – driis
@driis: sì, è possibile. –