變數的生存期

2022-09-22 18:42:59 字數 1025 閱讀 2031

標籤(空格分隔): c 雙學位高階語言程式設計 c函式

這節課我們要學習以下幾個問題:

編譯器是如何區分不同作用域中的同名變數的呢?

編譯器將它們分配給了不同的地址,所以能夠區分。

程式執行時,編譯器是如何為程式分配記憶體空間的呢?

儲存區分類

記憶體資料分類(線性從上到下)

記憶體低地址端

只讀儲存區

**區只讀儲存區

常量儲存區

靜態儲存區

動態儲存區

堆動態儲存區

……動態儲存區

棧記憶體高地址端

變數的儲存型別(就是編譯器為變數分配記憶體的方式)決定了變數的生存期。靜態儲存區中的變數生存期是整個函式,動態儲存區中的變數生存期是定義它的語句塊

儲存區分類

功能只讀儲存區

存放機器**和常量等只讀資料

靜態儲存區

存放全域性變數和靜態變數(靜態——初始化發生在程式編譯或連結時,程式執行時不發生

動態儲存區

包括堆和棧,其中,棧用於儲存函式呼叫時的返回地址、函式形參、區域性變數等資訊(動態)——初始化發生在程式呼叫和執行時

c語言有四種變數儲存型別,格式如下

儲存型別 資料型別 變數名
c儲存型別關鍵字有

自動變數是使用最廣泛的變數,所以c語言將其定為了預設型別,就是未宣告儲存型別時,預設定義變數為auto型;靜態變數儲存在靜態儲存區內,,僅僅在程式編譯時初始化一次,如果沒有定義初始化為何值,便初始化為0.不管是靜態區域性變數還是靜態全域性變數,生存期都是整個程式,只是作用域不同而已;外部變數是一種宣告方式,如果全域性變數想在定義點之前或者其他檔案中訪問,就需要將變數宣告(不是定義)為extern型別,告訴編譯器,就像函式的宣告一樣;暫存器變數是將變數儲存在cpu中的暫存器內,這適用於使用頻率較高的變數,能使程式更小、執行速度更快,但是現代編譯器一般都會自動識別轉化合適的變數,使其轉為暫存器變數,提高執行速度,所以一般不需要使用者自己宣告暫存器變數

Remoting 四 生存期租約

remoting 採取了一種稱之為 租約 的機制來管理遠端物件 singleton cao 的生存期策略。每個應用程式域中都有一個租約管理器...

深度管理Remote Objects的生存期

manage the lifetime of remote objects in depth 在《靈活管理remote objects生存期...

XML Web 服務生存期剖析

進行 xml web 服務呼叫時發生的過程與進行常規方法呼叫時發生的過程類似。主要的差別在於,不是呼叫位於客戶端應用程式中的方法,而是通過指...