Am trying to build a memory suballocator. I’ve some errors with the code bellow, it tells me that:
free_list_ptr->next = &firstByte;
free_list_ptr->prev = &firstByte;
am getting gcc error warnings of warning: assignment from incompatible pointer type
//primitive variable of byte as char, always positive.
typedef unsigned char byte;
static byte *memory = NULL;
struct header;
typedef struct _header {
int signiture;
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;
header* firstByte = (header*) memory;
free_list_ptr->size = size;
//error here: warning: assignment from incompatible pointer type
free_list_ptr->prev = &firstByte;
free_list_ptr->next = &firstByte;
}
This is most probably wrong:
do instead
In C
struct headerand thetypedefedheaderlive in two different name spaces. You forward declaredstruct headerbut you never defined it.Also, identifiers starting with
_are usually reserved for internals, so you shouldn’t use them for your own stuff.