Symbian內存管理的二十二條軍規

 

1、C類必須有析構函數,這是CBase的一個虛函數。
2、C類的構造函數和ConstructL()必須爲protect或private類型的成員函數
3、在C class中必須有一個NewLC()函數,除非它是嵌套類。NewL()是可選的,並且總是根據NewLC()來實現。
4、NewL()和NewLC()在c class中必須是static函數。 
5、C類通過指針和引用來傳遞。
6、拷貝構造函數在symbian中沒有用。
7、不一定要在析構函數中刪除類的成員對象。(生命期結束即可刪除)
8、析構函數中必須對對象進行if檢查。即
if(iObject) delete iObject;iObject = NULL;
9、R類沒有明確的構造、析構或拷貝構造函數以及賦值操作。
10、delete a;a=NULL;a=b;標準重新分配過程。
11、任何可能導致異常退出的函數皆加L後綴。
12、不要刪除非擁有對象(也就是,那些僅僅只使用的對象)
13、分配動態數組前定義一個合適粒度。
14、把new換成new(ELeave).
15、if(函數不能異常退出&&要自己處理錯誤時)使用TRAP&&不要過多嵌套。
16、if(aObject被一個自動變量指針引用&&將進行一個可能在aObject生存期內Leave的操作)
CleanupStack::PushL(aObject);
17、決不能把一個i前綴的成員變量PushL入清理棧。
18、構造函數決不能Leave,把可能異常退出的語句放到ConstructL()中去。
19、Symbian的默認棧容量爲8k,小心使用遞歸。
20、TBuf的長度最好不超16,必要的情況下用HBufC代替TBuf.
21、使用__UHEAP_MAEK 宏來檢測你的內存狀況。
22、儘可能早的刪除一切失去使用價值的東西,不要等到函數尾部(自動變量)或在析構函數中才刪除(成員變量)。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章