小编ohh*_*es_的帖子

malloc覆盖struct元素

在将0分配给count预期之前,先调用malloc 。但是,如果我malloc在给0赋值后调用,count它将覆盖的值countcount每次运行时,我都会打印出一个随机数。

有人可以解释为什么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

2
推荐指数
1
解决办法
75
查看次数

标签 统计

c ×1