回答編集履歴
1
スタックのメリットについて追記
    
        answer	
    CHANGED
    
    | 
         @@ -3,4 +3,24 @@ 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            FILO ... First In, Last Out ですから、その通りでしょう。
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
            スタック構造を使えば、関数呼び出しが簡単にできるという事です。
         
     | 
| 
      
 6 
     | 
    
         
            +
            スタック構造を使えば、関数呼び出しが簡単にできるという事です。
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            [追記]
         
     | 
| 
      
 9 
     | 
    
         
            +
            最近のCPUでは確認してませんが、、、スタック操作は専用命令があり、処理が楽。
         
     | 
| 
      
 10 
     | 
    
         
            +
            スタックポインタ更新(減算)、スタックにデータを置く。
         
     | 
| 
      
 11 
     | 
    
         
            +
            スタックを読出し、スタックポインタ更新(加算)。
         
     | 
| 
      
 12 
     | 
    
         
            +
            スタックポインタからのオフセットアクセス。
         
     | 
| 
      
 13 
     | 
    
         
            +
            それぞれが、一命令。
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            まあ、CPU依存ですが、Intelに関しては、x86互換が基本なので、変わらないと思います。
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            単にローカル変数をスタックじゃないところに置いても良いですが、スタックに置いた方が楽と思います。また、再帰関数なんて、スタックを使わずに実装するなんてどうすれば、良いのでしょうか。
         
     | 
| 
      
 18 
     | 
    
         
            +
            (きっと方法はあると思うが、思いつかない)
         
     | 
| 
      
 19 
     | 
    
         
            +
            また、ローカル変数をスタックに置くと、関数を抜ける時の後始末が楽というのがあります。(スタックポインタ操作だけ)
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            スタックとヒープですが、一つのメモリ領域を先頭(アドレスの小さい方)から、ヒープで、最後(アドレスの大きい方)から、スタックに割り当てるのが、昔の一般的割当て。(今も同じ?)
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            > スタック領域に逆順に確保
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            これは処理系(コンパイラ)依存と思います。
         
     | 
| 
      
 26 
     | 
    
         
            +
            コンパイラによっては、ローカル変数以外にも作業用の内部変数を使うものもあります。それらの変数は、ソースには無くても、スタック上に確保され、使われています。また、レジスタに割り当てられ、スタック上に領域が確保されない場合もあります。
         
     |