この図は、プロセスの仮想アドレス空間の模式図です。
スタックセグメント:
1関数内のローカル変数のためのストレージを提供します。
2.関数呼び出しが、記憶された「プロセス・アクティビティログ」。
一時記憶領域として3。長い演算式を計算するときには、スタックに演算結果の一部であってもよいです。
データセグメント(スタティックメモリ)
BSSセグメントは、データセグメント、セグメント記憶BSS初期化されていないグローバル変数、静的変数を含みます。グローバルおよび静的変数の初期化を介して、データ・ストレージ・セグメント。
スニペット:
また、テキストセグメントと呼ばれます。ストア命令の実行可能ファイル。
ヒープ:
必要に応じて、スタックセグメントが自動的に成長することができるように、データセグメントは、この作業の完了のための標的であり、これはヒープ(ヒープ)です。動的割り当てを格納するためのヒープ領域、すなわち、ライブメモリmalloc関数。callocとmallocとreallocの類似しました。旧戻る前に割り当てられたメモリの内容へのポインタがゼロにクリアされています。後者の変更、メモリブロックのポインタポイントの大きさ、彼は多くの場合、他の場所でメモリコピー、拡大、縮小することができますが、新しいアドレスを返します。
図1に示すように、スタック領域(スタック):自動的に解放コンパイラ、記憶された関数パラメータ、ローカル変数、等によって割り当てられました。スタックデータ構造と同様に動作します。
2、ヒープ領域(ヒープ):プログラマがプログラムの終了時に解放しない場合、プログラマによって割り当てられた解放は、OSによって回収することができます。それは同様の配布リストに触れる、それは全く別のスタックデータ構造であることに注意してください。
図3に示すように、全体的な領域(静的領域):グローバル変数と静的変数は、1つに格納され、領域内の他の初期化のグローバルおよび静的変数、初期化されていないグローバル変数と、隣接する初期化されていない静的変数エリア。システムによって放出されたプログラムの終了後。
4、リテラルエリア:定数文字列がここに置かれています。システムによって放出されたプログラムの終了後。
図5に示すように、プログラムコード領域:バイナリコードの機能本体を格納します。
2. 弹栈(出栈):返回栈顶指向的对象或数据,并从栈中删除该对象或数据,更新栈顶。