Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

Утечка ручки представляет собой тип ошибки программного обеспечения , которое происходит , когда компьютерная программа запрашивает ручку к ресурсу , но не освобождает ручку , когда он больше не используется. Если это происходит часто или неоднократно в течение длительного периода времени, большое количество дескрипторов может быть помечено как используемые и, следовательно, недоступные, что приведет к проблемам с производительностью или сбою .

Термин происходит от утечки памяти . Утечки обработки, как и утечки памяти, являются конкретными случаями утечки ресурсов .

Причины [ править ]

Одна из причин утечки дескриптора - это когда программист ошибочно полагает, что получение дескриптора объекта - это просто получение неуправляемой ссылки , не понимая, что на самом деле выполняется счетчик, копирование или другая операция. Другой возникает из-за плохих шаблонов проектирования обработки исключений , когда программисты не учитывают, что при возникновении исключения и преждевременном выходе из подпрограммы код очистки в конце подпрограммы может не выполняться.

Примером этого может быть получение дескриптора устройства отображения. Программисты могут использовать этот дескриптор для проверки некоторого свойства (например, запроса поддерживаемых разрешений), а затем просто продолжить, даже не отпуская дескриптор. Если дескриптор был просто указателем на некоторую структуру данных без дополнительного управления, то разрешение выхода дескриптора за пределы области действия не вызвало бы проблемы. Однако во многих случаях такие дескрипторы должны быть явно закрыты или освобождены, чтобы избежать утечки ресурсов, связанных с ними; точные требования к тому, что должно быть сделано с дескриптором, зависят от интерфейса.