Можно ли вызвать проблемы, преждевременно выпустив объект Windows GDI?

#c #windows #gdi #resource-leak

#c #Windows #gdi #утечка ресурсов

Вопрос:

Можно ли вызвать проблемы, преждевременно выпустив объект Windows GDI? С памятью можно преждевременно удалить / освободить буфер и вызвать действительно очень серьезные проблемы. Как насчет GDI? Можно ли вызвать сбой или проблемы с рисованием пользовательского интерфейса, преждевременно выпустив объект GDI?

Комментарии:

1. Сбой? Очень, очень маловероятно. Проблемы с рисованием? Очень, очень вероятно.

Ответ №1:

Вы не можете удалить объект GDI, который в данный момент выбран в любом контексте устройства (DC):https://learn.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-deleteobject

После удаления объекта его дескриптор недействителен, поэтому вы не можете выбрать его в DC.

Какой другой сценарий вы имеете в виду?

Комментарии:

1. Спасибо. У меня не было какого-либо конкретного сценария, мне просто было любопытно, является ли это реальной опасностью, на которую нужно обратить внимание. Я отлаживаю 20-летнюю программу, написанную другими, я все еще изучаю, где объекты GDI выделяются и освобождаются в этой программе.