У меня есть немного памяти, и я пытаюсь выделить ее несколькими кусками. Итак, у меня есть связанный список. Каждый узел отслеживает размер выделенной части памяти и следующего узла.
Когда я возвращаю указатель запрашивающей стороне, я возвращаю указатель сразу после завершения этого узла (скажем, return newNode + sizeOf(node)), потому что запрашивающей стороне нужна только память для использования.
Проблема в том, что когда я пытаюсь освободить его, изменив файл node. Когда myFree вызывается с указателем, и я делаю указатель - sizeOf(node), чтобы добраться до узла, это не работает.
Что я делаю не так?
Я не думаю, что это полезно, но вот код:
#define HEADER(24)
printf("Original pointer %-10p\n", pointer);
head *toUse = pointer + HEADER;
printf("Pointer to memory to be used %-10p\n", toUse);
printf("Trying to read the header again %-10p\n", toUse - HEADER);
Первый и третий printf дают мне разные адреса. Это проблема.
Что касается тестирования, я просто выделяю один кусок памяти в начале, и он все равно не работает.