在定義乙個資源變數標識時,應賦予初始表分配失敗的錯誤值(如常見的null)。
每次向系統申請資源或呼叫功能介面時,判斷其錯誤處理,如結果失敗goto跳轉到函式末尾將對程式當前獲取的所有資源進行統一釋放。
函式末尾返回前,有一段**將依次釋放所有已分配或占有的裝置資源,釋放前應先判斷變數是否有效,釋放後標記資源變數為無效值。這條規則同樣適用於任何時候對資源的釋放。這樣做的好處,一來只對已分配擁有的資源進行清理釋放,同一資源不會重複釋放,二變數能正確反映資源狀態,不存在野指標這種情況。
統一釋放時應按分配的逆順釋放,如時間上先分配資源了a、b、c、d,那麼集中釋放資源時的順序則為d、c、b、a,從依賴關係結構上來說,前者一定不依賴後者,而後者有可能對前者存在某種關係。
典型的free釋放的安全巨集定義如下:
#define safe_free(p) if(p)
科銳課堂筆記 2017 2 28 迴圈相關
大數階乘演算法優化,例求10的階乘1 2 3 4 5 6 7 8 9 10可轉換成 1 3 5 7 9 2 4 6 8 10 1 3 5 7 9 1 2 3 4 5 2,即把乙個大數階乘轉換成若干小數階乘,乘多少次2可用左移指令完成,其中2 5可去掉,記住有多少次2 5結果末位就加上多少個0,這樣一...
科銳課堂筆記 2017 3 17 結構體
結構體是不同資料 包括型別或邏輯意義 的集合。在設計定義乙個結構體時,要把其合理的資料組織在一塊。點 運算子用來訪問結構體成員,點運算子優先順序僅次於括號。vc6中預設的編譯選項,結構體成員對齊為8位元組 zp8 結構體成員的偏移位址規則是,必須是結構體成員對齊位元組數 zp?和該成員型別長度 字串...
科銳課堂筆記 2017 4 19 虛函式
我們知道c 是一門物件導向的語言,它有三大特性 封裝 繼承 多型。其中多型是最具有物件導向程式設計的特性。多型分靜態多型和動態多型。靜態多型也稱編譯時多型,指通過函式過載 運算子過載等,根據引數列表在編譯時刻確定呼叫函式。動態多型也叫執行時多型,是在執行時刻才確定呼叫的函式,執行時多型是通過類中的虛...