c/c++変数の格納場所
1890 ワード
変数のメモリは一般的に5つの部分に分けられますスタックstack:コンパイラによって自動的に割り当てられて解放され、関数のパラメータ値、ローカル変数などが格納され、スタックに対する操作方式はデータ構造のスタック に類似している.ヒープ領域heap:一般的にはプログラマによって割り当てられて解放され、プログラマが解放されない場合、プログラムの終了時にOSによって手を振る可能性がありますが、データ構造のヒープとは異なり、割り当て方法はチェーンテーブルに似ています. グローバル領域(静的領域)satic:グローバル変数と静的変数の記憶はブロックされている.初期化されたグローバル変数と静的変数は1つの領域に配置され、初期化されていないグローバル変数と静的変数は隣接する別の領域に配置されます.プログラム終了後のシステム解放 文字定数領域:定数文字列をここに置き、プログラム終了後にシステムから解放 プログラムコード取:関数体を格納するバイナリコードexample:
//main.cpp
int a = 0;
char *p1;
main()
{
int b;//
char s[] = "abc"; //
char *p2; //
char *p3 = "123456";// 123456\0"; ,p3 。
static int c =0; // ( )
p1 = (char *)malloc(10);
p2 = (char *)malloc(20);
// 10 20 。
strcpy(p1, "123456"); //123456\0 , p3 "123456" 。
}