スタックはメモリです。一部のプロセッサでは、これは特別な内部メモリですが、メモリです。ほとんどの場合、実際にはシステム メモリを指すスタック ポインタ レジスタに過ぎず、プログラマ (オペレーティング システムおよび/またはアプリケーション) がそれらのメモリを確認する必要があります。スタックポインタは、他の何かに使用されているメモリを指していません。
アイデアは、レジスタのセットが限られているということです。十分な数のレジスタがある場合でも、たとえば、再帰や、何かに使用されているいくつかのレジスタを再利用する必要があるようなことをしたい場合があります。そうしないと。スタックは、基本的に、物事、レジスタ、ローカル変数、戻りアドレス、または一時的に保存する必要があるものを一時的に保存するために、シンプル/高速の malloc と free を提供します。
RAMの代わりにスタックを使用する理由、またはレジスタが多い場合でもスタックを使用する理由は、スタックを使用すると、前述のように再帰を行うことができ、同じコードを数回/数百回入力でき、たとえばそのコードにいくつかの必要に応じて、各ローカル変数の個々のインスタンスすべて、数百のコピーを追跡できます。スタックを使用する方法はスタック ポインターに対して相対的であるため、スタック ポインターへのハードコーディングされた参照があるハードコードされたアドレスを持っていないため、関数を 1 回入力し、スタック ポインターがたまたま 0x1000 にある場合、最初の変数次に 0x1000 で 2 番目が 0x1004 である可能性があります。たとえば、関数が 16 バイトの情報をスタックに「追加」してから自分自身を呼び出すと、今回はスタック ポインターに入るときに 0xFF0 になります。