C 動態儲存方式與靜態儲存方式

2021-10-21 03:56:43 字數 630 閱讀 9215

如果從變數值存在的時間(即生存期)來分,可將程式中的變數分為:動態儲存方式和靜態儲存方式。它們所占用的儲存空間區域不同。

**區:存放可執行程式的程式**。靜態儲存區:存放靜態變數和全域性變數。棧區(stack):存放動態區域性變數

堆區(heap):存放new和 malloc()申請的動態記憶體。棧區和堆區統稱為動態儲存區。

動態儲存區可以存放函式的引數、自動變數、函式呼叫時的現場保護和返回位址等。這些以動態方式儲存的資料,在函式呼叫時分配動態儲存空間,函式結束時釋放這些空間,在程式執行過程中,這種分配和釋放是動態的,如果乙個程式兩次呼叫同一函式,則第一次呼叫時給形參和函式中的區域性變數分配記憶體空間,第一次呼叫完畢,這些空間被釋放。第二次呼叫時,重新給形參和函式中的區域性變數分配記憶體空間。兩次呼叫過程函式中形參和區域性變數的儲存空間不同。如果乙個程式包含若干個函式,每個函式中的形參和區域性變數的生存期並不等於整個程式的執行週期,而是當函式被呼叫時,動態地分配儲存空間,但函式呼叫完畢,分配的儲存空間將被釋放。

以靜態儲存方式(全域性變數和靜態區域性變數)儲存的資料全部存放在靜態儲存區中,在程式開始執行前就為其分配相應的儲存空間,在程式的整個執行期間一直占用,直到這個程式執行完畢後釋放。它的生存期就是整個程式的執行期。在程式執行過程中,它們佔據固定的儲存空間,而不是動態地進行分配和釋放。

堆 棧 動態儲存方式 靜態儲存方式

動態儲存方式 所謂動態儲存方式是指在程式執行期間根據需要進行動態的分配儲存空間的方式。動態儲存變數是在程式執行過程中,使用它時才分配儲存單元,使用完畢立即釋放。典型的例子是函式的形式引數,在函式定義時並不給形參分配儲存單元,只是在函式被呼叫時,才予以分配,呼叫函式完畢立即釋放。如果乙個函式被多次呼叫...

堆 棧 動態儲存方式 靜態儲存方式

熱度 3 已有 358 次閱讀 2011 1 14 00 32 動態儲存方式 所謂動態儲存方式是指在程式執行期間根據需要進行動態的分配儲存空間的方式。動態儲存變數是在程式執行過程中,使用它時才分配儲存單元,使用完畢立即釋放。典型的例子是函式的形式引數,在函式定義時並不給形參分配儲存單元,只是在函式被...

動態儲存方式和靜態儲存方式

從變數的作用域的角度來觀察,變數可以分為全域性變數和區域性變數 從變數值存在的時間 即生存期 觀察,變數的儲存有兩種不同的方式 靜態儲存方式和動態儲存方式 使用者區程式區 靜態儲存區 動態儲存區 資料存放在靜態儲存區和動態儲存區 靜態儲存區 全域性變數全部儲存在靜態儲存區 程式開始執行時給全域性變數...