コールスタック
サブルーチンには引数を必要とするものがある。引数は呼び出し側のコードが提供し、その引数をコールスタック上に置くことは珍しくない。一般に引数の個数が少なければ、プロセッサのレジスタが引数の受け渡しに使われる。しかし、引数の個数が利用可能なレジスタ数より多ければ、何らかのメモリ領域を使わざるを得ない。コールスタックはそのような値の受け渡しには最適で、サブルーチンの呼び出しの度に固有の引数が渡されるのに対して、コールスタックも呼び出しの度に固有の領域を与えられる。
論理演算や数値演算のオペランドは多くの場合レジスタに置かれて処理される。しかし、式が複雑になるとレジスタだけでは収まりきらなくなり、何らかのメモリ領域が必要となる。そのようなオペランドのためのスタック(逆ポーランド記法の電卓に似ている)は評価スタック (evaluation stack) と呼ばれ、コールスタックを利用して実装することがある。
コード(リターンアドレス)とデータ(引数、戻り値、局所変数)がコールスタックに混在していることはセキュリティ上危険である。詳しくはバッファオーバーランおよびスタックを参照されたい。