Ручка утечки
Эта статья нуждается в дополнительных цитатах для проверки . ( декабрь 2009 г. ) |
— Утечка дескриптора это тип программной ошибки , которая возникает, когда компьютерная программа запрашивает дескриптор ресурса , но не освобождает дескриптор, когда он больше не используется. [1] Если это происходит часто или неоднократно в течение длительного периода времени, большое количество дескрипторов могут быть помечены как используемые и, следовательно, недоступны, что приведет к проблемам с производительностью или сбою .
Этот термин происходит от утечки памяти . Утечки дескрипторов, как и утечки памяти, являются конкретными случаями утечек ресурсов .
Причины
[ редактировать ]Одной из причин утечки дескриптора является то, что программист ошибочно полагает, что получение дескриптора сущности — это просто получение неуправляемой ссылки , не понимая, что на самом деле выполняется подсчет, копирование или другая операция. Другая причина возникает из-за плохих обработки исключений шаблонов проектирования , когда программисты не учитывают, что при возникновении исключения и преждевременном выходе из подпрограммы код очистки в конце процедуры может не выполняться.
Примером этого может быть получение дескриптора устройства отображения. Программисты могут использовать этот дескриптор для проверки какого-либо свойства (например, запроса поддерживаемых разрешений), а затем просто продолжить, даже не отпуская дескриптор. Если бы дескриптор был просто указателем на некоторую структуру данных без какого-либо дополнительного управления, то выход дескриптора за пределы области действия не вызвал бы проблемы. Однако во многих случаях такие дескрипторы должны быть явно закрыты или освобождены, чтобы избежать утечки связанных с ними ресурсов; Точные требования к тому, что необходимо делать с помощью ручки, различаются в зависимости от интерфейса.
Ссылки
[ редактировать ]- ^ «Что такое утечка ручки? (с изображением)» . EasyTechJunkie . Проверено 11 ноября 2022 г.