我正在通过 Learn C The Hard Way 工作,并且对某些事情感到困惑。我已经编写了我遇到的问题的简化版本,以便更容易理解它:
#include <stdlib.h>
#define GROUP_SIZE 10
#define DATA_SIZE 64
struct Dummy {
char *name;
};
struct Group {
struct Dummy **dummies;
};
int main() {
struct Group *group1 = malloc(sizeof(struct Group));
group1->dummies = malloc(sizeof(struct Dummy) * GROUP_SIZE);
struct Dummy *dummy1 = group1->dummies[3];
// Why does this seg fault?
dummy1->name = (char *) malloc(DATA_SIZE);
return 0;
}
当我尝试在我的一个假人上设置名称指针时,我遇到了段错误。使用 valgrind 它告诉我这是未初始化的空间。为什么是这样?