問題
応用情報技術者 平成21年春期 午前問18
プログラムの実行時に利用される記憶領域にスタック領域とヒープ領域がある。それらの領域に関する記述のうち,適切なものはどれか。
- サブルーチンからの戻り番地の退避にはスタック領域が,割当てと解放の順序に関連のないデータにはヒープ領域が使用される。
- スタック領域には未使用領域が存在するが,ヒープ領域には未使用領域は存在しない。
- ヒープ領域はスタック領域の予備領域であり,スタック領域が一杯になった場合にヒープ領域が動的に使用される。
- ヒープ領域も構造的にはスタックと同じプッシュポップの操作によって,データの格納と取出しを行う。
答え
サブルーチンからの戻り番地の退避にはスタック領域が,割当てと解放の順序に関連のないデータにはヒープ領域が使用される。
解説
スタック領域
処理系によって自動的に確保/解放される領域。
サブルーチンからの戻り番地の退避に用いられる。
スタック構造でデータが管理される。
コールスタック (Call Stack)は、プログラムで実行中のサブルーチンに関する情報を格納するスタックである。実行中のサブルーチンとは、呼び出されたが処理を完了していないサブルーチンを意味する。実行スタック (Execution Stack)、制御スタック (Control Stack)、関数スタック (Function Stack)などとも呼ばれる。また、単に「スタック」と言ったときにコールスタックを指していることが多い。
出典: フリー百科事典『ウィキペディア(Wikipedia)』
ヒープ領域
プログラマによって確保/解放される領域。
割り当てと解放の順序に関連のないデータに用いられる。
双方向リストでデータが管理される。
動的にメモリ取得・解放を繰り返すことによりメモリ上にどこからも参照されない領域(ガベージ)が発生する。
ヒープ領域(heap memory)はコンピュータープログラミングにおいて、動的に確保可能なメモリの領域。ヒープ (heap) とは、『山積み』という言葉の中の『山』をさす英単語である。
出典: フリー百科事典『ウィキペディア(Wikipedia)』