天天看點

const、static型資料在記憶體中如何存儲?(變量存放位置)

const、static型資料在記憶體中如何存儲?(變量存放位置)

const、static型資料在記憶體中如何存儲?(變量存放位置)
static int  val_a = 1 ; // 初始化的靜态變量 

int  val_b = 2 ;        // 全局變量 

const int  val_c = 3 ;  // const 全局變量 

static int  val_d ;     // 未初始化的靜态變量 

int  val_e ;            // 未初始化的全局變量

int main()

{

    static int val_f = 5;  // 初始化的局部靜态變量

    static int val_g;      //未初始化局部靜态變量

    int    val_h = 6;      //初始化局部變量

    int    val_i;          //未初始化局部變量

    const  int val_j = 7;  //const局部變量

    return 0;

}
           

①static無論是全局變量還是局部變量都存儲在全局/靜态區域,在編譯期就為其配置設定記憶體,在程式結束時釋放,例如:val_a、val_d、val_h、val_i。

②const全局變量存儲在隻讀資料段,編譯期最初将其儲存在符号表中,第一次使用時為其配置設定記憶體,在程式結束時釋放,例如:val_c;const局部變量存儲在棧中,代碼塊結束時釋放,例如:val_j。

③全局變量存儲在全局/靜态區域,在編譯期為其配置設定記憶體,在程式結束時釋放,例如:val_b、val_e。

④局部變量存儲在棧中,代碼塊結束時釋放,例如:val_h、val_i。

注:當全局變量和靜态局部變量未賦初值時,系統自動置為0。