Инженерный журнал: наука и инновацииЭЛЕКТРОННОЕ НАУЧНО-ТЕХНИЧЕСКОЕ ИЗДАНИЕ
свидетельство о регистрации СМИ Эл № ФС77-53688 от 17 апреля 2013 г. ISSN 2308-6033. DOI 10.18698/2308-6033
  • Русский
  • Английский
Статья

Проверка корректности освобождения ресурсов, локальных для функции на языке C

Опубликовано: 20.11.2013

Авторы: Медников А.В., Крищенко В.А.

Опубликовано в выпуске: #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