《C語言筆記 變數的生命週期》

2022-05-23 15:18:09 字數 518 閱讀 2376

一,棧變數的生命週期

1,區域性變數儲存在棧上,生命週期是臨時的。從定義變數處誕生到變數最近的 『}』處消亡。

2,比如乙個函式內定義的區域性變數,在這個函式的每一次呼叫時都會被建立一次,然後使用,最後在函式返回時消亡。

二,堆變數的生命週期

1,堆空間是客觀存在的,是由作業系統維護的。程式只是申請然後使用後釋放。

2,從malloc申請時誕生,然後使用,最後到free後消亡。malloc之前和free之後都不能再去訪問。

三,資料段、.bss段的生命週期

1,全域性變數的生命週期時永久的。在程式被執行時誕生,在程式終止時消亡。

2,申請過多的全域性變數會導致這個程式一直占用大量的記憶體。

四,**段、唯讀段的生命週期

1,其實就是程式執行的**,其實就是函式,它的生命週期時永久的。不過一般**的生命週期並不關注。

2,有時候放在**段的不只是**,還有const型別的常量,字串常量。(const的變數、字串常量有時候反正**段,有時候放在唯讀資料段取決於平台)

c變數的生命週期

內部變數 生命週期 函式結束時結束.作用域 宣告的花括號中.儲存區域 棧記憶體區域.不會自動初始化.但會申請空間.外部變數 生命週期 和程式的生命週期一樣.作用域 程式的所以地方做可以使用,但需要使用extren進行宣告.儲存區域 在全域性區域.自動初始化.並生命自身的儲存空間.內部靜態變數 生命週...

D 語言的變數生命週期

對於編寫應用的 c 程式設計師,生命週期 lifecycle 恐怕是所有需要注意的事項裡面最討厭,最容易導致錯誤,而且出錯後後果最嚴重的乙個了。d 作為 c 的改進者,在生命週期上有了不少改進,不幸的是其中一些改進可能是違反 c 程式設計師直覺的,下面列出一些常見差異。struct 和 class ...

變數的生命週期

from 今天在論壇上看到有朋友發帖問道 既然靜態全域性變數與全域性變數都儲存在全域性資料區,為什麼作用域卻不一樣呢?也許答案非常簡單 c 就是這麼規定的,靜態全域性變數與全域性變數的唯一區別就是作用域不同。對乙個c 變數來說,有兩個屬性非常重要 作用域和生命週期,它們從兩個不同的維度描述了乙個變數...