【发布时间】:2015-02-10 22:28:52
【问题描述】:
我正在尝试缩小 *bool 的数组,但我不确定它是否被正确删除。
这是我的源代码...
bool *oldStore;
void shrinkArray(int i)
{
int k;
bool *newStore;
for(k=0; k<i; k++)
{
newStore[k] = oldStore[k];
}
for(; k<originalSize; k++)
{
delete[] oldStore[k];
}
delete[] oldStore;
oldStore = newStore;
}
例如,如果我想将数组缩小到5,并且数组的原始大小是15,它将保留前五个并删除后十个,但是我不太确定我的记忆是否管理得当。
【问题讨论】:
-
您不应该删除数组中的每个条目。只有
delete你new,只有delete[]你new[]。但是,在您的情况下,不需要动态分配的数组,当您认为“动态数组”时,您应该考虑std::vector。 -
你甚至从未初始化指针
newStore,或分配任何东西。这可能会在第一次使用newStore[k]时崩溃。但除了在许多方面不正确之外,这种方法无论如何都非常原始。
标签: c++ arrays pointers memory-leaks delete-operator