天天看點

全局、靜态、局部變量的記憶體配置設定

在标準的C中,變量大概可以分為全局變量(用extern修飾),靜态變量(用static修飾),局部變量三中類型.

     在記憶體中用于存儲變量的空間也可以分為堆區、棧區、全局區(靜态區)。其中堆區:一般由程式員配置設定釋放, 若程式員不釋放,程式結束時可能由OS回收,一般存放malloc()函數申請請的變量空間;棧區:由編譯器自動配置設定釋放 ,存放函數的參數值,局部變量的值等;全局區(靜态區):全局變量和靜态變量的存儲是放在一塊的,初始化的全局變量和靜态變量在一塊區域, 未初始化的全局變量和未初始化的靜态變量在相鄰的另一塊區域。

      驗證:靜态變量與全局變量都存放在同一片區域當中

#include<iostream.h>

/* 全局變量 */

extern int iTx = 1;

void main()

{

       /* 靜态變量 */

       static int iSTx = 2;

       /* 局部變量 */

       int ijx = 3;

       cout<< &iTx <<endl;

       cout<< &iSTx <<endl;

       cout<< &ijx <<endl;

}

輸出的結果:

0x0042AD50

0x0042AD54

0x0012FF7C

從這裡可以看出iSTx和iTx是存放在同一片連續的記憶體空間當中,相差4個單元長度。其他存儲區的驗證方法以之相識。

下一篇: 函數

繼續閱讀