高質量C/C++編程指南讀書筆記(2)

7.2.1用malloc或者new申請內存之後,應該立即檢查指針值是否爲
NULL。防止使用指針值爲NULL的內存。
7.2.3動態內存的申請與釋放必須配對,防止內存泄漏。
7.2.4用free或delete釋放了內存之後,立即將指針設置爲NULL,防止
產生“野指針”。

7.7野指針的成因:
(1)指針變量沒有被初始化。
(2)指針p被free或者delete之後,沒有置爲NULL,讓人誤以爲p是個
合法的指針。

7.9內存耗盡問題:
(1)判斷指針是否爲NULL,如果是則馬上用return語句終止本函數。
(2)判斷指針是否爲NULL,如果是則馬上用exit(1)終止整個程序
的運行。
(3)爲new和malloc設置異常處理函數。

7.10free的用法:
如果p是NULL指針,那麼free對p無論操作多少次都不會出問題。如果p
不是NULL指針,那麼free對p連續操作兩次就會導致程序運行錯誤。

8.5一下情況不宜使用內聯:
(1)如果函數體內的代碼比較長,使用內聯將導致內存消耗代價較高。
(2)如果函數體內出現循環,那麼執行函數體內代碼的時間要比函數
調用的開銷大。
不要隨便地將構造函數和西溝函數的定義體放在類聲明中。

9.0
C++編譯器自動產生四個缺省的函數,如:
A(void);
A(const A &a);
~A(void);
A &operator=(const A &a);
9.1 類的const常量只能在初始化表裏被初始化。
9.2 基類與派生類的析構函數應該爲虛繼承。

11.1
對於非內部數據類型的輸入參數,應該將“值傳遞”的方式改爲“const
引用傳遞”,目的是提高效率。
對於內部數據類型的輸入參數,不要將“值傳遞”的方式改爲
“const引用傳遞”。否則既達不到提高效率的目的,又降低了函數的可
理解性。
11.2函數返回值採用“引用傳遞”的場合並不多,這種方式一般只出現
在類的賦值函數中,目的是爲了實現鏈式表達。
11.3const成員函數
任何不會修改數據成員的函數都應該聲明爲const類型。

11.4先優化數據結構和算法,再優化執行代碼。
11.5變量(指針、數組)被創建之後應當及時把它們初始化,以防止
把未被初始化的變量當成右值使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章