我有一些内存,我尝试将它分成几部分。所以我有一个链表。每个节点跟踪分配的内存块的大小和下一个节点。
当我将指针返回给请求者时,我会在该节点结束后立即返回一个指针(比如 return newNode + sizeOf(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 给了我不同的地址。那就是问题所在。
至于测试,我一开始只分配了一块内存,还是不行。