Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Кіріспе
Бағдарламалық жасақтама қатесінің түрі
Software bug type
Тұтқаның үзілуі – компьютерлік бағдарлама ресурстың тұтқасын сұрап алғанда, бірақ оны қажеттілігі болмаған кезде босатпағанда туындайтын бағдарламалық жасақтама қатесі. Егер мұндай жағдай жиі немесе ұзақ уақыт бойы қайталап орын алса, көптеген тұтқалар қолданыста деп белгіленіп, қолжетімді болмай қалуы мүмкін, бұл өнімділік мәселелеріне немесе жүйенің істен шығуына әкелуі мүмкін. Бұл термин жадтың үзілуінен шығарылған. Жадының үзілуі сияқты, тұтқаның үзілуі де ресурс үзілуінің нақты мысалы болып табылады.
A handle leak is a type of software bug that occurs when a computer program asks for a handle to a resource but does not free the handle when it is no longer used. If this occurs frequently or repeatedly over an extended period of time, a large number of handles may be marked in use and thus unavailable, causing performance problems or a crash. The term is derived from memory leak. Handle leaks, like memory leaks, are specific instances of resource leaks.
Себептер
Ұстаманың ағып кетуіне бір себеп – бағдарламашы бір нысанға ұстама алуды басқарылмайтын сілтеме алу деп жаңылысып, іс жүзінде санау, көшіру немесе басқа операция жасалып жатқанын түсінбейді. Екінші себеп – бағдарламашылар ерекше жағдай туғанда және процедурадан ертерек шыққанда, процедура соңындағы тазалау коды орындалмауы мүмкін екенін ескермейтін нашар ерекше жағдайларды өңдеу үлгілерінен туындайды. Мысалы, дисплей құрылғысына ұстама алуды қарастырайық. Бағдарламашылар осы ұстаманы кейбір қасиеттерді тексеру үшін (мысалы, қолдау көрсетілетін ажыратымдылықты сұрау) пайдалана алады, содан кейін ұстаманы босата алмай жай ғана жалғастыра береді. Егер ұстама қосымша басқарусыз деректер құрылымына көрсетсе, онда ұстаманың қолданыс аймағынан шығуы мәселе тудырмас еді. Дегенмен, көп жағдайда мұндай ұстамаларды олармен байланысты ресурстардың ағып кетуіне жол бермеу үшін жабу немесе босату қажет; ұстамамен не істеу керектігінің нақты талаптары интерфейске байланысты өзгереді.
One cause of a handle leak is when a programmer mistakenly believes that retrieving a handle to an entity is simply obtaining an unmanaged reference, without understanding that a count, a copy, or other operation is actually being performed. Another occurs because of poor exception handling design patterns when programmers do not consider that when an exception occurs and a sub routine is exited prematurely, the cleanup code at the end of the routine may not be executed. An example of this might be retrieving a handle to the display device. Programmers might use this handle to check some property (e. g. querying the supported resolutions), and then simply proceed on without ever releasing the handle. If the handle was just a pointer to some data structure with no additional management, then allowing the handle to pass out of scope would not cause an issue. However, in many cases, such handles must be explicitly closed or released to avoid leaking resources associated with them; the exact requirements for what must be done with a handle varies by interface.