Únik rukojeti - Handle leak

Nevracení úchyt je typ softwarové chyby , ke kterému dochází, když se počítačový program zeptá na rukojeti ke zdroji , ale neuvolní kliku, když se již nepoužívá. Pokud k tomu dochází často nebo opakovaně po delší dobu, může být velký počet popisovačů označen jako používaný, a proto nedostupný, což způsobí problémy s výkonem nebo selhání .

Termín je odvozen od úniku paměti . Úniky úniků, stejně jako úniky paměti, jsou konkrétní instance úniků prostředků .

Příčiny

Jednou z příčin nevracení popisovače je, když programátor mylně věří, že načtení popisovače do entity jednoduše získá nespravovaný odkaz , aniž by pochopil, že se ve skutečnosti provádí počet, kopie nebo jiná operace. Další nastane kvůli špatným návrhovým vzorům zpracování výjimek, když programátoři neuvažují o tom, že když dojde k výjimce a předčasně je ukončena dílčí rutina, nemusí být proveden čisticí kód na konci rutiny.

Příkladem toho může být načtení popisovače do zobrazovacího zařízení. Programátoři mohou použít tento popisovač ke kontrole nějaké vlastnosti (např. Dotazování na podporovaná rozlišení) a pak jednoduše pokračovat dál, aniž by uvolnili popisovač. Pokud by popisovač byl pouze ukazatel na nějakou datovou strukturu bez další správy, pak povolení průchodu popisovače mimo rozsah by nezpůsobilo problém. V mnoha případech však musí být takové popisovače výslovně uzavřeny nebo uvolněny, aby se předešlo úniku prostředků s nimi spojených; přesné požadavky na to, co je třeba udělat s popisovačem, se liší podle rozhraní.