apple a = malloc(sizeof(apple));
Распределит память по размеру указателя, а не по фактической структуре.
Избегайте определения структуры для указателя;
typedef struct
{
list_element header;
int value;
} apple;
apple *a = malloc(sizeof(apple ));
или
Наилучшим подходом будет обращение к type
, который pointer
содержит, как показано ниже.
typedef struct
{
list_element header;
int value;
} *apple;
apple a = malloc(sizeof(*a));