C ++のメモリ割り当てとパーティショニング

1、流通

静的割り当て:

静的な領域(グローバル領域)、割り当てのグローバル変数は、静的変数は、主な機能よりも優先されます。

動的割り当て:

(1)自動割り当て:スタック領域
(2)は、手動で割り当て:ヒープ、( mallocfree) (new,delete)

メモリパーティションの2、4種類

Cコンパイラプログラムメモリによって占有さは、大きく次のセクションに分かれています。

スタック領域(スタック):

動的割り当て。コンパイラによって自動的に割り当てられ、保存された関数のパラメータ、ローカル変数などをリリースしています。スタックの最上部から高地址往低地址成長方向。1メガバイトまで。

ヒープ(ヒープ):

動的割り当て。一般的には、プログラマがプログラムの終了時に解放しないならば、あなたは、オペレーティング・システムによって回収することができる、それ以外の場合は常に存在しますが、手動で回復する必要があるプログラマやリリースによって割り当て(mallocの動的なメモリ割り当てや無料リリース)。ヒープ低地址到高地址成長。ヒープに大きなスペースが必要になるとか不定スペース。

グローバル領域(静的エリア)(静的):

静的割り当て。グローバル変数と静的変数は、初期化の部分に格納される全局变量静态变量、エリア内のプログラムの終了時に、オペレーティングシステムによって解放された領域で相互に隣接する領域でのグローバル変数と初期化されていない静的変数が初期化されていません。

プログラムコードエリア:

静的割り当て。オペレーティングシステムプログラムによって解除後バイナリコード記憶機能体、文字列や他の定数(例えばの#define X 10)保管場所、。書き込みを読んではありません。

おすすめ

転載: www.cnblogs.com/ldcs/p/11821894.html