如果我在循环中创建一个堆数组,我必须在每个循环结束时删除它,然后再次在循环开始时重新初始化它,或者再次重新初始化完全相同的东西,只需覆盖旧数组和我可以跳过删除命令吗?
答案 0 :(得分:1)
你的意思是这样吗?
for (int i = 0; i < 5; i++) {
char *array = new char[10];
// ...
delete[] array;
}
在这种情况下:是的,你确实需要删除数组。
如果你写了这样的东西,
char *array = 0;
for (int i = 0; i < 5; i++) {
if (!array) array = new char[10];
// ...
}
delete[] array;
然后不,你可以在循环的多次迭代中重用该数组。
答案 1 :(得分:0)
添加到ephemient的答案:为什么你在考虑重新初始化循环内的数组?
如果循环的每次迭代都需要执行这两个步骤,那么您的问题是合适的:
1)将数据插入数组。
2)对已经填充到数组中的数据执行某些操作
如果这听起来不像你的代码需要做的那样,那么问题的答案应该是:不要创建或删除循环中的数组。在循环之前创建数组,然后删除它。
(根据我的经验,很少发现步骤1)和2)在同一循环中完成的情况。)