C/C++ 構造体ポインタの実体のない領域への参照

typedef struct {
    int a;
} sample_t;

int main() {
    sample_t *p;
    p->a = 10;
}

 

以上は間違い。

ポインタpはアドレスを覚えておくだけの変数なので、まだ値を代入する領域が用意されていない。

よって実行時エラーになる。

 

○対処法

p = (sample_t *)malloc(sizeof(sample_t));

として領域を確保し値を代入。