Red de conocimiento de abogados - Derecho de sociedades - Problemas de liberación de recursos en mfc

Problemas de liberación de recursos en mfc

CPen, CBrush o Cfont generalmente se crean mediante CreateXXX(),

como:

CPen pen

pen.CreatePen; (...);

Si llama a CreatePen(...); nuevamente sin pen.DeleteObject();, se producirá un error.

CDC

Se recomienda liberar el objeto cdc;

Utilice ReleaseDC(amp;cdc);

Recuerdo que había un programa que no se lanzó antes. Como resultado, Abrí el administrador de tareas y vi que la memoria ocupada por el programa sigue aumentando y se solucionará después del lanzamiento.

Suplemento:

No sé mucho sobre la teoría, así que te daré un ejemplo de mis sentimientos:

Supongamos que escribes este código a un evento de botón, como por ejemplo:

OnButton1(){

HDC hdc=GetDC(hWnd

CDC cdc

cdc.Attach (hdc);

cdc.TextOut(0, 0, "OK");

}

Si cdc no está publicado, entonces ejecuta el programa y abre el Administrador de tareas, verifica el proceso de su programa y luego hace clic en el botón. Debería ver que el uso de memoria está aumentando. Si lo libera, esta situación no debería suceder. En cuanto a no publicarlo, ¿sucederá? No estoy seguro de otras situaciones.

Para CPen CBrush, etc., asuma el siguiente código:

CBrush br;

br.CreateSolidBrush( RGB(0, 0, 0)); //Pincel negro

...

br.DeleteObject(); //Liberar br.

br.CreateSolidBrush(RGB(255, 0, 0)); //Pincel rojo

...

br.DeleteObject(); Releasebr

Si no suelta el pincel negro, ejecute br.CreateSolidBrush(RGB(255, 0, 0)); se producirá un error al crear el pincel rojo. Debería deberse a que no suelta el pincel. pincel negro Por supuesto, puedes usar dos objetos CBrush br1, br2.

Pero aun así se recomienda usar DeleteObject() después de su uso;