私は 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;
}
ダミーの 1 つに名前ポインターを設定しようとすると、セグ フォールトが発生します。valgrind を使用すると、これは初期化されていないスペースであることがわかります。どうしてこれなの?