(未完成,待續。。)編碼
第一章:C++基本功spa
1. 養成良好的編碼習慣。調試
2. 堆上的資源隨用隨還,嚴格控制生命週期。code
第二章:一些調試心得blog
1. 在VisualStudio環境下,曾出現 Detected memory leaks!,調試好久,有以下心得:繼承
a. 能夠逐步簡化程序,確認問題點,同時使用 _CrtSetBreakAlloc(x) 輔助查找問題。生命週期
b. 使用 Borland 公司開發的 DevPartner,比較強大。內存
2. 一處 class 繼承 後的問題。資源
在 C#中,幾乎不用擔憂內存問題,而C++中則有些區別。開發
1 class A 2 { 3 protected: 4 int * p1; 5 }; 6 7 class A1 : class A 8 { 9 A1() 10 { 11 p1 = new int[10]; 12 } 13 ~A1() 14 { 15 delete [] p1; 16 } 17 };
以上代碼,可能會報 內存泄露的錯誤。好比按如下方式調用:
1 A * a = new A1(); 2 delete a;
實際析構方式是: ~A(), 就截至了,並無調用 ~A1()。 這致使內存泄露。
因此:int * p1 是基類的成員,就應該有基類來釋放。子類想使用能夠,可是僅限於使用,不能擁有(即:構造、析構都不該該由它來管理)。
修改後的代碼以下:
class A { protected: int * m_p1; public: A(int p1_count) { m_p1 = new int[p1_count]; } ~A() { delete [] p1; } }; class A1 : class A { A1() : A(10) { } ~A1() { } };