1。new做的事情:a) 分配內存。 b) 調用(一個或多個)ctor。 delete做的事情:a)調用(一個或多個)dtor。 b)釋放內存。
2。無論是自定義對象還是內建類型的分配與釋放,都必須使用相同形式的new和delete。如果不匹配,行爲未定義 !
單個對象:new,delete。數組:new [], delete []。
3。delete無法知道釋放的是單個對象還是數組,需要程序員明確地告之。
4。當類中有pointer data member並且有多個ctor時,要保證在所有ctor中對該指針的賦值具有相同語義,要麼全指向單個對象,要麼全指向數組。否則,在dtor中應該使用delete還是delete []來釋放它呢?
5。如果typedef一個數組?
6。不推薦對數組使用typedef,因爲維護人員可能誤以爲指針指向的是單個對象而非數組。這種情況推薦使用vector<string>。