Проверка корректности освобождения ресурсов, локальных для функции на языке C
Авторы: Медников А.В., Крищенко В.А.
Опубликовано в выпуске: #6(18)/2013
DOI: 10.18698/2308-6033-2013-6-1098
Раздел: Информационные технологии
Если перемененные, хранящие идентификатор полученного ресурса, являются локальными для некоторой функции, то ресурс должен быть свободен до момента ее завершения, иначе его освобождение произойдет только при уничтожении процесса. Оно также должно осуществляться в соответствии с жизненным циклом идентификатора ресурса. Для проверки корректности освобождения локальных ресурсов предложен алгоритм, основанный на статическом анализе ГПУ функции. Он позволяет обнаруживать утечку таких локальных для функции ресурсов, а также попытку повторного освобождения, использования после освобождения и попытку освобождения невыделенного ресурса. Программная реализация предложенного алгоритма использует ГПУ функции на языке C, полученный компилятором GCC. Разработанное программное обеспечение может обнаруживать ошибки, связанные с освобождением локальных ресурсов.
Литература
[1] Stroustrup B. The design and evolution of C++ — Adisson — Wesley, 1994, 480 p.
[2] Nethercote N., Seward J. Valgrind: a framework for heavyweight dynamic binary instrumentation. Proceedings of the 2007 Programming Language Design and Implementation Conference, 2007, vol. 26, no. 6, pp. 89-100
[3] Ковега Д.Н., Крищенко В.А. Использование системы LLVM при динамическом поиске состояний гонок в программах. Инженерный журнал: наука и инновации, 2013, вып. 2(14). URL: http://engjournal.ru/catalog/it/hidden/549.html
[4] Lowry E.S., Medlock C.W. Object code optimization. Common. ACM, 1969, vol. 12, no. 1, pp. 13-22