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 表达式中使用 []。
本文来自博客园,作者:芝士wa,转载请注明原文链接:https://www.cnblogs.com/cheese-wa/p/18108604

浙公网安备 33010602011771号