メモリ サブアロケータを作成して初期化しようとしていますが、ポインタの処理が間違っていると思います。このサブアロケータは、メモリのブロックを malloc し、サイズを示すためにフロント バイトに配置された 32 バイトの「ヘッダー」で分割します。
ヘッダーは、循環二重リンクリストであると想定されています。したがって、最初の初期化では、構造体の next 値と prev 値はそれ自体を指します。
何時間もこれに取り組もうとしていて、疲れていて、今はポインターにかなりイライラしています..
typedef unsigned char byte;
static byte *memory = NULL;
struct header;
typedef struct _header {
int size;
struct header * next;
struct header * prev;
}header;
static header* free_list_ptr;
void allocator_init(u_int32_t size){
memory = (byte*) malloc(size);
//initialize free_list_ptr;
free_list_ptr = (header*) memory;
free_list_ptr->size = size;
free_list_ptr->prev = free_list_ptr; //error: assignment from incompatible pointer type
free_list_ptr->next = free_list_ptr; //error: assignment from incompatible pointer type
}