УДК 004.052
Проверка корректности освобождения ресурсов,
локальных для функции на языке C
© А.В. Медников, В.А. Крищенко
МГТУ им. <...> Н.Э. Баумана, Москва, 105005, Россия
Если перемененные, хранящие идентификатор полученного ресурса, являются локальными для некоторой функции, то ресурс должен быть свободен до момента
ее завершения, иначе его освобождение произойдет только при уничтожении процесса. <...> Оно также должно осуществляться в соответствии с жизненным циклом
идентификатора ресурса. <...> Для проверки корректности освобождения локальных
ресурсов предложен алгоритм, основанный на статическом анализе ГПУ функции. <...> Он позволяет обнаруживать утечку таких локальных для функции ресурсов, а
также попытку повторного освобождения, использования после освобождения и
попытку освобождения невыделенного ресурса. <...> Программная реализация предложенного алгоритма использует ГПУ функции на языке C, полученный компилятором GCC. <...> Разработанное программное обеспечение может обнаруживать ошибки, связанные с освобождением локальных ресурсов. <...> Ключевые слова: обнаружение утечки ресурсов, ошибки использования ресурсов,
обработка ошибок, статический анализ, C, GCC, ГПУ. <...> Если процесс не освобождает своевременно ресурс, выделенный
ему операционной системой, то момент освобождения такого ресурса
откладывается до завершения процесса. <...> Обработка ошибок на языке C выполняется
при помощи условного оператора, часто в связи с оператором перехода как ближайшего аналога блока try ... finally в других языках
программирования. <...> В результате, освобождение ресурсов в программе на языке C возложено на программиста, и с ростом числа
используемых в функции ресурсов возрастает и количество потенциальных ошибок. <...> Если все переменные, хранящие идентификатор такого ресурса,
локальны для функции, то можно утверждать, что ресурс должен
быть освобожден к моменту ее завершения, иначе наблюдается ситуация утечки ресурса. <...> А.В. Медников, В.А. Крищенко
ствуют <...>