language-agnostic - memory-management - Windows 10 address space - スタックとヒープはどこに何があるのか?

Linux arm64 memory map / memory-management / stack / heap / dynamic-memory-allocation

プログラミング言語の本では、値型はスタック上に作成され、参照型はヒープ上に作成されると説明されていますが、これら2つのことは説明されていません。私はこれについての明確な説明を読んでいません。スタックとは何かを理解しています。だが、

RajeshKdev



Answer #1

Windows であまり使わない巨大な一時的なバッファを作ることは自由ではありません。これは、コンパイラがスタックの存在を確認するために、関数が入力されるたびに呼び出されるスタックプローブループを生成するためです(Windowsは、スタックを拡張する必要があるときに検出するために、スタックの最後に1つのガードページを使用するためです。スタックの終わりから 1 ページ以上離れた場所のメモリにアクセスするとクラッシュします)。)例

void myfunction()
{
   char big[10000000];
   // 99%の時間の最初の1Kにのみ使用することを行います。
}