メモリ管理スタックスタック

図1は、どのようなスタックである
   スタックは、C言語は、ローカル変数のスタックを格納するために使用されるデータ構造です。発明され、スタックはメモリ管理です。
2、スタックメモリ管理機能(小さなメモリ、自動化)が
   出スタックの最後に最初のFILOを最終
   先入れ先出しの待ち行列にFIFOから最初に最初の
  スタック機能の入り口がエクスポートされている、唯一つのポートがあり、他のポートがでブロックされています。これはアウト後に前進する必要があります。
  特長キューが入口と出口れている、輸出から、入り口から行かなければなりません。だから、それ以外の場合は背後にブロックします、外出する必要性に進出しました。
図3は、アプリケーションスタック例:ローカル変数
   C言語では、達成するために、ローカル変数のスタックです。
   とき、スタック上に割り当てられた私たちのローカル変数への私たちは、C内のローカル変数を定義します(int型A)、コンパイラが割り当てられます空間部(4バイト)(
   スタックポインタの移動はローカル変数にスペースを与えます手段は、ローカル変数、スタックを、メモリの4つのバイトが使用され、我々は、関連するメモリアドレスと名前を定義する
   )と共に、対応する動作は、スタックを積層することです。
 注:このスタックポインタの動きとメモリ割り当てが自動的に行われます(自分を積み重ね、私たちは、操作するためのコードを記述する必要はありません)。
    我々は機能を終了すると、ローカル変数は滅びるするために、次に待ちます。操作に対応するスタック(スタック)ポップされます。スタックポインタはスタック領域をスタックに移動されたときに
    関連付けられた空間の4バイトと放出されます。また、このアクションは、自動的にスタック介入を採用し、コードを記述しないでください。
 スタックの利点:スタックメモリ管理、便利なの利点は、流通・最終回収プログラマは自動的にC言語で、心配する必要はありません。
 詳細な分析:C言語、ローカル変数の定義は初期化されていない場合、その値はランダムで、その理由は?
 スタックポインタを移動することで、スタック上のプログラムにメモリ空間とローカル変数のバインディングの名前を提供するために、実際には、ローカル変数を定義します。このメモリ空間なので
 定義されたローカル変数を達成するために、スタックを使用する際に初期化されていない場合は、なるようにスタック上、およびスタックメモリは、(それが明確な、最後に実行されません)繰り返し使用され
 、変数の値がランダムでありますA。
 C言語は、ローカル変数の初期化によって達成される小意味:
 INT A = 15; //初期化ローカル変数が定義されて
 自動的にCコンパイラはラインにこのコードを変換する:
 INT A; //ローカル変数の定義
 、A = 15 ; //通常の割り当て
4、制約をスタック
 最初、スタックサイズがあります。だから、スタックメモリサイズが設定されていません。メモリを無駄にオーバーフローするには余りにも恐れている場合、あまりにも怖いです。(この欠点配列のようなビット)は、
 第二に、スタックオーバーフローが大きな損害であるので、我々は避けなければなりません。定義されたか、大きすぎないローカル変数の定義が多すぎます。(例:
 int型[10000];再帰を使用しているとき、我々は再帰的な収束の問題に注意を払う必要があります)

おすすめ

転載: www.cnblogs.com/jiangtongxue/p/11352133.html