概要
int型とuint8_t型のポインタで挙動が異なり、理由を調べようとしたが、キーワードが不明で行き詰ってしまったためアップ
追記:
皆様のコメントにより、解決致しました。
問題となるコード
// コード1
int* iptr;
*iptr = 10; // Segmentation Fault にならない
printf("%d\n",*iptr); // 10が出力
上でなぜ 10 が出力されるのか、わからない。
普通は、以下のどちらかで宣言している。
// コード2
int val = 10;
int* iptr1;
iptr1 = &val;
// コード3
int* iptr2;
iptr2 = (int *) malloc( sizeof( int));
*iptr2 = 10;
uint8_t 型でコード1 を書き直すと、Segmentation Fault になる。
uint8_t* uptr;
*uptr = 0x1; // Segmentation Fault
uint8_t 型だと、(教科書どおりの?)コード2 のやり方でないといけない。
疑問点
int型では内部的に勝手に malloc が呼ばれているのだろうか。
int型はそもそもどこで定義されているのだろうか。
int 宣言などで調べても出てこないため、同じ疑問を持っている人が
いるかもしれないため、申し訳ありませんが投稿しました。