我通常回避不必要的 C++ 特性,但随着时间的推移,我无法避免面对我的小怪兽。最近的是 operator new[]
和潜在的内存问题。
char *playerNewNames = new char[numPlayers][50];
很高兴知道我们不需要那么多指针 *
间接寻址,我对使用 malloc
进行 C 迭代很有信心,但上面的步骤似乎太过分了.我的编译器没有提示,但我想确保我将获得一个大小为 numPlayers
的数组,每个索引包含 50 个字符。我将如何释放它?
我会尝试 delete[][]
但即使没有抛出它也不是 100% 明显它会清除所有内容,而无需我进行迭代。请有人解释一下。提前致谢。
最佳答案
char *playerNewNames = new char[numPlayers][50];
是个错误。你应该得到一个编译器错误。正确的语法是:
char (*playerNewNames)[50] = new char[numPlayers][50];
并删除它:
delete[] playerNewNames;
然而,更好的选择是不使用 C 风格的数组,也不使用 new
。相反,使用为您管理内存的容器类,例如 std::vector
或 std::array
。
关于c++ - 我还是不明白 C++ operator new[] (or new[][]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25282542/