Symbian OS C++程序員編碼訣竅分析(pdf 22頁)
目錄
1 簡介 6
1.1 讀者對象和範圍................6
2 內存 6
2.1 有關清除堆棧(CleanupStack).............6
2.1.1 所有程序都應檢查“資源用盡”出錯.........6
2.1.2 傳統的偵錯方法.............6
2.1.3 使用傳統方法的問題............6
2.1.4 Symbian OS中的解決方案............7
2.2 規則1:異常退出函數和捕獲模塊............7
2.2.1 異常退出函數..............7
2.2.2 new (ELeave)運算符............7
2.2.3 NewL() 和 NewLC()慣例...........8
2.2.4 TRAP and TRAPD 使用捕獲模塊:TRAP 和 TRAPD.......8
2.3 規則2:使用清除堆棧...............9
2.3.1 為何需要清除堆棧(Cleanup Stack)..........9
2.3.2 使用清除堆棧..............9
2.4 規則3: 兩階段構造..............9
2.4.1 用NewL() 和 NewLC()實現兩階段構建.........11
2.5 公共錯誤.................12
2.5.1 誤用TRAP 和 TRAPD............12
2.5.2 錯誤使用了new運算符...........12
2.5.3 錯誤使用了後綴‘L’............12
2.6 內存泄漏.................13
2.6.1 使用WINS模擬器中的工具...........13
2.7 檢查和嚴重提示(Asserts and Panics)...........15
3 係統資源的使用(ROM 和 RAM).............16
3.1 重要性..................16
3.2 減少代碼量.................16
3.2.1 不必要的導出函數.............16
3.2.2 複製和粘貼...............16
3.2.3 明顯不可分解的函數.............16
3.2.4 過分的TRAP模塊..............16
3.2.5 調試發行代碼...............16
3.2.6 不必要的虛函數..............16
3.2.7 使用公共控件...............17 Symbian OS C++程序員編碼訣竅 3
Forum.Nokia.com
3.2.8 _L宏的誤用...............17
3.3 減少使用RAM................17
3.3.1 使用bitfields(位元組合), 而不使用太多的Tbools.....17
3.3.2 陣列粒度的使用警示.............17
3.3.3 避免全局數據...............17
3.3.4 小心基類的成員數據.............17
3.3.5 正確使用清除堆棧.............17
3.3.6 盡早刪除...............17
3.3.7 用最大數據集進行硬件測試...........18
3.3.8 分解複雜的長運算.............18
3.4 減少堆棧的使用...............18
3.4.1 正確使用描述符..............18
3.4.2 小心使用遞歸,在限度內生成..........18
3.4.3 注意登錄代碼...............18
3.5 盤容量降低的處理...............18
4 生成(Build)ARM 目的文件.............20
4.1 概述...................20
4.2 函數導出.................20
4.3 來自PETRAN的“MyDll.DLL has (un)initialized data”錯誤........20
1 簡介
1.1 讀者對象和範圍
本文的讀者對象是:所有使用C++語言為Symbian OS 6.x/7.0s開發應用的開發夥伴們。
有一個不成文的80/20法則,說的是:需要用80%的時間去糾正開發中產生的20%的問題。本文的目的就是要解決這20%的問題。
2 內存
本節所述內容包括:對Symbian OS所提供的預防內存泄漏問題的一些技術作了回顧。所有開發者應該對此都有深刻理解:這是Symbian OS在編程方麵的精髓!
2.1 有關清除堆棧(CleanupStack)
2.1.1 所有程序都應檢查“資源用盡”出錯
任何應用都可能在運行中發生因資源缺乏而導致的出錯,例如,機器用盡了內存,或某個通訊端口不可用。這種類型的出錯被稱為一個異常。
必需區分異常與編程錯誤:編程錯誤用修改程序來解決,但一個程序是不可能完全消除出現異常的可能性。
因此,發生異常時,程序本身應該有能力從各種異常中恢複。在Symbian OS中,這一點特別重要,這是基於下列理由:
..............................