在将0分配给count预期之前,先调用malloc 。但是,如果我malloc在给0赋值后调用,count它将覆盖的值count。count每次运行时,我都会打印出一个随机数。
有人可以解释为什么count会被覆盖吗?
#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;
} …Run Code Online (Sandbox Code Playgroud) c ×1