回答編集履歴
1
未修正反映
answer
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
皆さんのおっしゃっている通り、変数がどこに配置されるかは処理系依存です。
|
2
2
|
ただ、オートマチック変数は、その特性上、すなわち、関数の呼び出し順に割り当てられ、呼び出しと逆順に解放されるため、レジスタに割り当てられるものを除いて、スタックに割り当てられることが極めて多いです。
|
3
3
|
|
4
|
-
1回の関数呼び出しで作られるスタック上の領域を**スタックフレーム**(構造体のようなもの)と呼びます。スタックフレームには、引数、リターンアドレス(関数から戻った後に実行されるコードのアドレス)、呼び出し元の関数の、オートマチック変数が含まれます。
|
4
|
+
1回の関数呼び出しで作られるスタック上の領域を**スタックフレーム**(構造体のようなもの)と呼びます。スタックフレームには、引数、リターンアドレス(関数から戻った後に実行されるコードのアドレス)、呼び出し元の関数のスタックフレームのアドレス(フレームポインタ)、オートマチック変数が含まれます。
|
5
5
|
|
6
|
+
7FABD759D127は、リターンアドレスではないでしょうか。コードの領域とスタックの領域はかなり離れていますから。
|
6
7
|
|
7
8
|
> ちなみに、大部分は以下のようなコードがが占めています。
|
8
9
|
printf "\x25\x78\x2c\n"
|