これは今長い間私を悩ませてきた。C++:関数の変数宣言は、内部的にどのように動作しますか?
void test(){
int t1, t2, t3;
int t4 = 0;
int bigvar[10000];
// do something
}
どのようにコンピュータが変数のためのメモリ割り当てを処理しない:私は機能を持っているとしましょうか?
私はいつも変数スペースがコンピュータが読み込む.exeに保存されていると考えてきましたが、これは正しいですか?しかし、私が知る限り、bigvar
配列は、初期化されていないので、.exe内の要素スペースを10000 int
としていません。では、関数を呼び出すと、メモリ割り当てはどのように機能しますか?
exeは_disk_に格納され、そこにコンパイルされたコードが格納されます。しかし、実行されると、_processor_ユニットからメモリが必要になります。ディスク内のバイトは、変数に必要なバイトに対応していません。 –
http://stackoverflow.com/questions/556714/how-does-the-stack-work-in-assembly-language – karlphillip