C語言中區域性靜態變數的特點

2021-10-11 09:13:03 字數 602 閱讀 6668

c語言存在以下三種作用域:

全域性變數

檔案內部的靜態變數

區域性變數

全域性變數、靜態變數(包括上圖中的「檔案內部的靜態變數」和「區域性靜態變數」)都具有靜態儲存期,變數的壽命週期從程式執行時即開始,到程式關閉時結束,其一直存在於記憶體的同乙個位址上。

也就是說,可以將區域性靜態變數理解為一種限定了作用範圍的全域性變數。其宣告語句的位置與其被建立的位置無關,僅與其作用範圍有關。

相關概念補充:

1.區域性自動變數的儲存期:

區域性自動變數的儲存期被稱為「自動儲存期」,在程式進入它所在的語句塊時被分配以記憶體區域,在該語句塊結束後這片區域被釋放。

這種特徵通常使用「棧」的機制來實現。

2.檔案內的靜態變數:

即與全域性變數同樣定義在函式外,但有static標籤的變數,這種變數的作用範圍僅為當前檔案,相當於僅在當前源**檔案內生效的全域性變數。

3.通過動態記憶體技術分配的記憶體區域:

可以通過new、malloc()等分配動態記憶體,由指標變數指向這些記憶體區域,從而在記憶體中的某個場所取得相應大小的記憶體區域,實現動態記憶體分配。

值得注意的是,這種記憶體區域理論上並不可以被稱為「變數」,它僅僅是指標指向的記憶體區域。

DLL中區域性靜態變數釋放時間

背景說明 dll中存在很多業務邏輯,包括網路連線的管理。dll中的所有業務採用多執行緒管理,假設dll中有兩個工作執行緒workthread1和workthread2。dll中存在乙個日誌記錄系統,採用單件形式編寫,單件例項的獲取採用區域性靜態物件的方式。主控制類也採用了單件,單件例項獲取同前。1 ...

C中區域性變數 全域性變數和靜態變數辨析

根據區域性和全域性 靜態和非靜態,可以將變數分為4種 非靜態區域性變數 非靜態全域性變數 靜態區域性變數和靜態全域性變數,為方便起見,下稱為區域性變數 全域性變數 靜態區域性變數和靜態全域性變數。從作用域上 1.區域性變數只在宣告它的函式中可用 2.全域性變數在宣告它的原始檔中可用,可通過exter...

C語言中區域性變數和全域性變數解釋

區域性變數 在乙個函式內部定義的變數是區域性變數,它只在本函式範圍內有效,也就是說只有在本函式內才能使 用它,在此函式外是不能使用這些變數的。這些稱為區域性變數。說明 1 不同函式中可以使用相同名字的變數,它們代表不同的變數,互不干擾。2 形式引數也是區域性變數 3 在乙個函式內部,可以再復合語句中...