使用HEAP阵列进行内存管理

时间:2010-01-15 03:29:02

标签: arrays visual-c++

如果我在循环中创建一个堆数组,我必须在每个循环结束时删除它,然后再次在循环开始时重新初始化它,或者再次重新初始化完全相同的东西,只需覆盖旧数组和我可以跳过删除命令吗?

2 个答案:

答案 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)在同一循环中完成的情况。)