#include <stdio.h>
void inc(int* p) {
*p = *p + 1;
}
int main() {
const int a = 10;
inc(&a);
printf("%d\n",a);
}
上記のプログラムはエラーなしでコンパイルされ、ローカル変数 'a' がスタックに入るため、出力は 11 になります。
だから私の質問は:
- 「a」がスタックに入る理由。.rodata セクションに入ると思っていました。しかし、なぜそうしなかったのですか?
- 一方、「a」をグローバル定数変数として宣言すると、.rodata セクションに入ります。
これは私を楽しませます!!