Это небольшая библиотека для поиска не освобожденных объектов на куче для языка C.
- Включите в свой проект файлы leaks_debug.h, leaks_debug.c.
- Во всех файлах, где вы выделяете/освобождаете память, замените #include <stdlib.h> на #include "leaks_debug.h".
- В местах, где вы хотите выводить список не освобожденных объектов, вызовите функцию _dumpMemoryLeaks().
- В конце программы вызовите функцию _freeHeapList(), чтобы очистить список не освобожденных объектов.
- В файле leaks_debug.h настройте нужный вам уровень отладки.
- Запускайте программу и латайте утечки!
В файле leaks_debug.h есть #define DEBUG_HEAP <уровень>. Для настройки нужного уровня, замените <уровень> на нужное число(уровень отладки).
- 0 - Отладка отключена, память не отслеживается, никаких дампов произведено не будет.
- 1 - Включено отслеживание выделения и освобождения памяти.
- 2 - Включено отслеживание выделения и освобождения памяти. При этом при каждом выделении/освобождении в stdout будет выводиться сообщение о месте выделения/освобождения объекта.
При активном уровне отладки 2 будут показаны следующие сообщения:
Malloc %номер объекта%:<0x%адрес объекта в памяти%> in file: "%путь до файла, в котором был вызван malloc%" at line %номер строки%
Malloc 1:<0x1002021b0> in file: "/dev/ccpp/LeaksDebug/LeaksDebug/main.c" at line 52
Free %номер объекта%:<0x%адрес объекта в памяти%> in file: "%путь до файла, к котором был вызван malloc%" at line %номер строки%
Free 4:<0x100202970> in file: "/dev/ccpp/LeaksDebug/LeaksDebug/main.c" at line 66
Готовый пример использования можно посмотреть в файле main.c