私はいくつかのメモリを持っており、いくつかの部分に割り当てようとしています。だから私はリンクされたリストを持っています。各ノードは、割り当てられたメモリのサイズと次のノードを追跡します。
リクエスターにポインターを返すときは、このノードが終了した直後にポインターを返します (return newNode + sizeOf(node) など)。これは、リクエスターが必要とするのは使用するメモリだけだからです。
問題は、ノードを変更して解放しようとしたときです。myFree がポインターで呼び出され、ノードに到達するために pointer - 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);
1 番目と 3 番目の printf では、異なるアドレスが返されます。それが問題です。
テストに関しては、最初にメモリを1つ割り当てただけで、まだ機能しません。