(十五)儲存類 鏈結和記憶體管理

2021-07-25 13:42:51 字數 983 閱讀 2033

一、儲存模型

1、變數:是對程式中資料的儲存空間的抽象

儲存期:變數在記憶體中的儲存時間

作用域:程式的那些部分通過變數名來使用變數

2、生命週期與作用域

區域性變數:

生命週期:從定義開始,到該模組結束

作用域:該模組內

static修飾的區域性變數:

生命週期:從定義開始,到程式結束

作用域:該模組內

全域性變數:

生命週期:從定義開始,到程式結束

作用域:整個程式

static修飾的全域性變數:

生命週期:從定義開始,到程式結束

作用域:本檔案內

3、變數儲存型別

二、記憶體管理

1、malloc/free

malloc與free是配對使用的,free只能釋放堆空間。如果malloc返回的指標值丟失,則所分配的堆空間無法**,稱記憶體洩漏,同一空間重複釋放也是危險的,因為該空間可能已另分配,所以必須妥善儲存malloc返回的指標,以保證不發生記憶體洩漏,也必須保證不會重複釋放堆記憶體空間

2、條件編譯

編譯器根據條件的真假決定是否編譯相關的**

(1)根據巨集是否定義

#ifdef

……#else

……#endif

(2)根據巨集的值

#if

……#else

……#endif

三、make簡介

1、make:工程管理器(自動編譯管理器)

「自動」是指它能夠根據檔案時間戳自動發現更新過的檔案而減少編譯的工作量,同時,它通過讀入makefile檔案的內容來執行大量的編譯工作

2、自動變數

$< 第乙個依賴檔案的名稱

$@ 目標檔案的完整名稱

$^ 所有不重複的目標依賴檔案,以空格分開

儲存類,鏈結和記憶體管理

一,儲存類 不同的儲存類提供了變數的作用域,鏈結以及儲存時期的不同組合。儲存時期,作用域,鏈結 儲存時期 變數在記憶體中保留的時間。函式原型作用域從變數定義處一直到原型宣告的末尾。這說明編譯器在處理乙個函式的引數時,它所關心的只是該引數的型別。乙個在所有函式之外定義的變數具有檔案作用域。二,鏈結 關...

儲存類 鏈結和記憶體管理

作用域 鏈結乙個 變數具有下列鏈結之一 外部鏈結 內部鏈結或空鏈結。具有 塊作用域或者函式原型作用域的變數有空鏈結,意味著它們是由其定義所在的 塊或者函式原型所私有的。具有檔案作用域的變數可能有內部或者外部鏈結。乙個具有外部鏈結的變數可以在乙個多檔案程式的任何地方使用。乙個具有內部鏈結的變數可以在乙...

儲存類 鏈結和記憶體管理

malloc calloc free ansi 型別限定符 冪等作用域描述了程式中可以訪問乙個識別符號的乙個或多個區域 函式作用域 函式原型作用域 從形參定義到原型宣告結束 檔案作用域 具有檔案作用域的變數可能有外部或者內部鏈結 預設是外部函式 可以被其它檔案訪問 只能用於所定義的檔案 定義在標頭檔...