Существует возможность сбора мусора в С, в частности, с использованием Консервативного Бома ГХ . Чтобы использовать его, замените malloc
на GC_malloc
, strdup
на GC_strdup
во всей вашей программе, и вам не следует беспокоиться о вызове free
или GC_free
. ГК Бема хорошо работает на практике (даже если в теории существует небольшая вероятность утечки).
Обратите внимание, что наличие данных в реальном времени не является модульным свойством: данный фрагмент данных работает во всей программе (а не в конкретном данном модуле).
Чтобы ответить на первоначальный вопрос, важной задачей является определение политики распределения и ее документирование. В частности, каждая функция, возвращающая динамически распределенные данные, должна указывать, как и кем эти данные должны быть free
-d.
добавления
Полезный инструмент для поиска ошибок утечки памяти в C (или C ++) в Linux - valgrind . Не забывайте передавать -g -Wall
флаги gcc
и g++
при разработке кода.