|
分類:[その他の言語]
お世話になります。DD.です。
環境:WindowsXP(x86)、VC++2008
関数呼び出し時のスタックの挙動に関して不明点があったので質問させて下さい。
メモリの上位から下位にかけて、スタックフレームの後に「192byte + α(ローカル変数)」分の領域が確保されていることを確認したのですが、 この「192byte」は何のための領域なのでしょうか?
ローカル変数が増えてもその分+αが増えるだけで、「192byte」に関しては固定されているようであり、 再帰的に呼び出しを行ってもさらに下位に向かってスタックが確保されていく(当然ながら通常の関数呼び出しと同様に)だけで、 用途がよくわかりませんでした。
また、ローカル変数 1つにつき、約12byte(プリミティブ型ではdouble以外で12byteを確認。また、配列の場合は要素数に応じてさらに領域が確保されることも確認)の領域が確保されていることも確認したのですが、 変数を使用しても変数の型に応じたbyte数分が使用されているだけで、残りのbyteが使用されていることを確認することができませんでした。 私の確認の仕方の問題かもしれませんが、この残りのbyteは何のために確保されているものなのでしょうか?
よろしくお願い致します。
|