Estoy usando algún código no administrado que devuelve punteros (IntPtr) a objetos de imagen grandes. Utilizo las referencias, pero después de que haya terminado con las imágenes, necesito liberar esa memoria a la que hacen referencia los punteros. Actualmente, lo único que libera la memoria es apagar toda mi aplicación. Necesito poder liberar esa memoria desde el interior de mi aplicación.C# desasignar memoria a la que hace referencia IntPtr
Aquí está la llamada a la que asigna la memoria. hbitmap
es el puntero que se devuelve y debe desasignarse.
[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);
¿Cómo se asignó la memoria? –
Este es un duplicado de http: // stackoverflow.com/questions/2159150/how-to-free-intptr-in-c –
OK, entonces, ¿qué dice la documentación de DsImageTransfer que haga con el resultado cuando haya terminado con él? Si tiene que desasignar la memoria, tienen que decirle cómo hacerlo. –