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"       。 
    
        }