スタック
コンピューティングにおいて、スタックはオブジェクトの集合を格納するために使用されるデータ構造です。個々の項目は、push操作を使用してスタックに追加し、格納できます。オブジェクトは、項目をスタックから削除するpop操作を使用して取り出せます。
オブジェクトをスタックに追加すると、それまでに追加されたすべての項目の上に置かれます。項目を削除するときは、スタックの上または下から削除できます。項目を上から削除するスタックは、「LIFO」(Last In, First Out)スタックと呼ばれます。LIFOスタックは、カードを1枚ずつ山の上に置き、上からカードを引くトランプの山としてイメージできます。「FIFO」(First In, First Out)スタックでは、項目は下から削除されます。FIFOスタックは、商品が自動販売機に入れられた順番で払い出される、自動販売機の列としてイメージできます。
スタックは、コンピュータープログラミングでさまざまな用途に使用されます。たとえばLIFOスタックは、キャッシュから最近使用されたオブジェクトを取り出すために使用できます。FIFOスタックは、入力された順番でデータが取り出されるようにするために使用でき、キューでのデータ処理に利用できます。
スタックはソフトウェアプログラマーによって一般的に使用されますが、プログラムを使用している間、通常はスタックに気付きません。これは、スタックの作成やpush操作、pop操作が、アプリケーションの実行中にバックグラウンドで行われ、ユーザーには見えないためです。ただし、スタックのメモリが不足すると、「スタックオーバーフロー」が発生します。プログラムがこれを正しく処理しない場合、スタックオーバーフローによってエラーメッセージが表示されたり、プログラムがクラッシュしたりすることがあります。
NOTE:「スタック」という用語は、複数のネットワークプロトコルが連携して動作するプロトコルスタックを指すこともあります。各プロトコルは、OSIモデルで定義された7つの異なる層のいずれかに分類されます。
知識をテストする