グローバル変数、静的なグローバル変数、静的ローカル変数、ローカル変数の違い

:(から割り当てられたメモリ内のコードを見てください:  http://www.cppblog.com/prayer/archive/2009/08/17/93594.html

BSS:BSS(BSSセグメント)は、一般店舗プログラム初期化されていないグローバル変数を使用するメモリの領域を指します。BSSは、シンボルによって開始英語の略語ブロックです。BSSセグメントに属するスタティックメモリアロケーション。

データセグメント:データセグメント(データセグメント)は、一般的にグローバル変数を初期化格納プログラムに使用されるメモリの領域を指します。属するデータセグメントスタティックメモリの割り当て。

コード・セグメント:コードセグメント(コード・セグメント/テキストセグメント)は、一般的に実行される格納プログラムコードに使用されるメモリの領域を指します。この部分領域の大きさのプログラムの実行が直前に決定され、通常は読み出し専用のメモリ領域に属してきたが、いくつかのアーキテクチャは、プログラムを変更することを可能にする、書き込むことができるコードセグメントを可能にします。コードセグメントでも、文字列定数などの定数読み取り専用変数を含んでいてもよいです。

ヒープ(ヒープ):ヒープをするために使用され、動的に割り当てられるメモリセグメントで実行中のプロセスを格納し、そのサイズを動的に拡大または縮小し、固定されていません。プロセスは、メモリおよび他の機能を割り当てるmalloc関数呼び出したとき、新たに割り当てられたメモリを動的ヒープ(ヒープ拡張)に添加し、メモリを解放するために自由な機能を使用する場合、メモリが解放され拒否され(スタックが減少する)ヒープから

スタック(スタック):スタック、またスタックとして知られている、店舗のユーザプログラムへのローカル変数が一時的に作成され、「{}」に定義変数として(しかし、静的な宣言、静的手段を備えていない私達のブラケットの関数である可変そのデータ・セグメント変数ストレージ)。関数が呼び出されたときに加えて、そのパラメータは、呼び出されたプロセス・スタックを開始するためにプッシュされ、コールが終了するまで、戻り値は、バックスタックに格納されます。FIFOスタックの特性により、スタックは保存/呼び出しサイトを復元するために特に便利です。この意味で、我々は預金、為替データの一時記憶領域として積み重ねることができます

その後:(から、その違いの観点から:  https://blog.csdn.net/Jacketinsysu/article/details/51171483

非常に詳細なリンクでは、さらに、本明細書が記載されていません。

 

静的グローバル変数は、以下の特徴を有する:
変数は、グローバルデータ領域(データ・セグメント)にメモリを割り当て、
初期化されていない静的なグローバル変数は自動的に0に初期化される(変数の値がない限り、インビボランダム関数を自動的に宣言されています明示的に変数のin vitro機能)を0に初期化されますと宣言され、自動的に初期化され、
そのファイル全体の静的グローバル変数の宣言は、書類に加えて、表示されて表示されていない、
静的変数があります静的ローカル変数を含むグローバルデータエリアに割り当てられたメモリは、後述します。:完全なプログラムのために、メモリ内の分布は以下のように
()は、従来のメモリ割り当て、初期化を含む主に実行する際に、そこで静的データ。
//下位アドレスコード領域及びグローバルデータヒープスタック領域//高いアドレス領域
スタック領域に格納されて新たに生成された動的データの一般的な手順、スタック領域に保持された自動変数のインテリア。自動変数は、関数から撤退し、スペースを解放する傾向があると、静的データ(でも、内部関数の静的ローカル変数)は、グローバルデータ領域に格納されます。グローバルデータ領域のデータと機能を終了し、領域を解放しません。

静的なグローバル変数は、次のような利点を持って定義します(このドキュメントの行為内でのみ有効)
1.静的なグローバル変数は、他のドキュメントで使用することはできません。
2.その他の変数は、同じファイル名ではなく、紛争に定義することができます。

 

おすすめ

転載: www.cnblogs.com/fanhua666/p/11490589.html