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>。