これが以前に尋ねられた場合は申し訳ありませんが、何も見つかりませんでした...
「通常の」x86 アーキテクチャの場合:
C++ で大きな関数を呼び出すと、メモリはすべてのスタック変数にすぐに割り当てられますか? または、関数が終了していなくてもスタックサイズを変更できる (および変更する) コンパイラがあります。
たとえば、新しいスコープが開始された場合:
int largeFunction(){
int a = 1;
int b = 2;
// .... long code ....
{ // new scope
int c = 5;
// .... code again ....
}
// .....
}
別のスコープの先頭にある変数 c についても呼び出しスタックが「成長」し、最後に「縮小」する可能性はありますか? それとも、現在のコンパイラは、関数のエントリと戻り値でスタック ポインタに影響を与えるコードを常に生成しますか? 事前にご回答いただきありがとうございます。