ICDロゴ

スタック (stack)

別名
FILO (First In, Last Out) 【ファイロ/フィロ】
LIFO (Last In, First Out) 【ライフォ/リフォ】

最終更新日: 2002/04/22

 コンピュータにおける基本的なデータ構造の1つ。最後に入れたデータが最初に取り出される(最初に入れたデータが最後に取り出される)ようなデータ構造。FILO(First In, Last Out、先入れ後出し)とかLIFO(Last In, First Out、後入れ先出し)とも呼ばれる。キュー(FIFO)と対比されることが多い。

 スタックは、概念的には、データを積み木のように積み上げる操作に例えることができる。スタックにデータを入れるということは、データを順番に上へ上へと積み上げていくことに相当する。この構造からデータを取り出す場合は、一番上のもの(最後に置いたデータ)が最初に取り出される。一番下にあるデータ(一番最初に入れたデータ)を取り出すには、その上にあるデータをすべて取り出してからでないと(最後でないと)取り出すことはできない。スタックにデータを入れることを「プッシュする」といい、スタックからデータを取り出すことを「ポップする」という。また、スタックの一番上(一番最後に入れたデータのある場所)を「スタック・トップ」という。

 スタックは、コンピュータにおける最も基本的なデータ構造の1つであり、サブルーチンや関数からの戻りアドレスを管理するためなどに使われている。現在実行中のプログラムのアドレスをスタックにプッシュしてからサブルーチンや関数へジャンプし、それらのルーチンの最後で戻りアドレスをスタックからポップして、元の場所へ戻る。スタックを使うことにより、サブルーチンや関数が何段もネストしていても(入れ子になっていても)、元の場所へ戻ってくることができる。これ以外にも、レジスタやメモリの内容を一時的に退避する場合にスタックはよく使われる。例えばレジスタの内容をスタックにプッシュしておいて、レジスタを他の用途に使い、その後スタックからレジスタの内容をポップすれば、レジスタの内容を簡単に復旧させることができる。

スタック
スタック
データを次々と積み上げていくような形式のデータ構造。データを入れることを「プッシュする」、データを取り出すことを「ポップする」という。一番最後に入れたデータを一番最初に取り出すことができる。

Copyright (C) 2000-2007 Digital Advantage Corp.

アイティメディアの提供サービス

キャリアアップ