Что можно поискать/почистить/обратить внимание в коде
дублирующиеся хедеры
неиспользуемые хедеры
утечки памяти (ловятся с помощью valgrind [-v] --leak-check=full):
ф-ции malloc(), calloc(), realloc(NULL, size), strdup(), asprintf(), vasprintf() выделяют память. После использования она должна быть освобождена вызовом ф-ции free() или realloc(ptr, 0).
в С++ для выделения памяти используется new и должна быть освобождена с помощью delete.
утечки ресурсов (утечки файловых дескрипторов ловятся с помощью valgrind --track-fds=yes):
fopen(), freopen(), fdopen() или mkstemp() должны быть закрыты с помощью fclose() или fcloseall()
open должен быть закрыт с помощью close()
временный файл, созданный с помощью mktemp() или mkstemp() должен быть удалён с помощью unlink(), а временный каталог, созданный с помощью mkdtemp() должен быть удалён вызовом rmdir()