Calling malloc before assigning 0 to count
works as expected. But, if I call malloc
after assigning 0 to count
then it overwrites the value of count
. I get a random number printed out for count
every time I run it.
Could someone explain why count
gets overwritten?
#include <stdio.h>
#include <stdlib.h>
typedef struct list list;
struct list {
size_t element_size;
size_t capacity;
size_t count;
void* data;
};
list* create_list(size_t element_size) {
list* list = malloc(sizeof(list));
list->element_size = element_size;
list->capacity = 8;
list->data = malloc(8 * element_size);
list->count = 0;
// If malloc is called here instead then count is overwritten
// list->data = malloc(8 * element_size);
printf("count: %zu\n", list->count);
return list;
}
int main(int argc, char** argv) {
list* l = create_list(sizeof(int));
}