Если у вас есть проект, использующий make-файл, который компилирует несколько файлов и заголовков, это усложняет кучу?
В частности:
У меня есть файл main.c
, который содержит заголовок, скажем test.h
. В test.c
, который связан с test.h
память выделяется явно с помощью malloc. main.c
вызывает функции в test.c
. Почему-то, когда я пытаюсь освободить память внутри функций в test.c
, я всегда получаю сообщение об ошибке:
main(65245) malloc: *** error for object 0x106d012f8: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6
... эта ошибка возникает, хотя я никогда, ни разу не освобождаю память вообще во всем стеке make-файлов. Очевидно, stdlib.h
включено. Что может происходить? Существуют ли отдельные кучи для main.c
и test.c
, и когда последний вызывается и возвращается результат, выделенная память кучи уже освобождается? Я действительно в тупике. Я могу выделить и освободить память в main.c
без каких-либо проблем. Они включают в себя то же самое.