Sto usando un codice non gestito che sta restituendo i puntatori (IntPtr) agli oggetti immagine di grandi dimensioni. Uso i riferimenti ma dopo aver finito con le immagini, ho bisogno di liberare quella memoria a cui fanno riferimento i puntatori. Attualmente, l'unica cosa che libera la memoria è quella di spegnere la mia intera app. Devo essere in grado di liberare quella memoria dall'interno della mia applicazione.C# deallocate la memoria a cui fa riferimento IntPtr
Questa è la chiamata che alloca la memoria. hbitmap
è il puntatore che viene restituito e deve essere deallocato.
[DllImport("twain_32.dll", EntryPoint = "#1")]
public static extern TwainResult DsImageTransfer(
[In, Out] Identity origin, [In] Identity dest, DataGroup dg,
DataArgumentType dat, Message msg, ref IntPtr hbitmap);
Come è stata allocata la memoria? –
Questo è un duplicato di http: // StackOverflow.it/questions/2159150/how-to-free-intptr-in-c –
OK, cosa dice la documentazione di DsImageTransfer sul risultato quando hai finito? Se ti viene richiesto di deallocare la memoria, devono dirti come si fa. –