Item16:成对使用的new和delete要使用相同的形式

芝士wa
2024.4.1
Item16链接


引例:
下面的代码有什么问题:

std::string *stringArray = new std::string[100];
...
delete stringArray;

很明显,创建了一个字符串数组,但是删除的时候只删除了100个对象中的1个。
下面的写法是正确的
std::string *stringPtr1 = new std::string;

std::string *stringPtr2 = new std::string[100];

...

delete stringPtr1;                     // delete an object

delete [] stringPtr2;                  // delete an array of objects

如果你在 new 表达式中使用了 [],就必须在对应的 delete 表达式中也使用 []。如果你在 new 表达式中没有使用 [],你也不必在对应的 delete 表达式中使用 []。

posted @ 2024-04-01 15:41  芝士wa  阅读(19)  评论(0)    收藏  举报