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