我听说当你使用“new”时,你通常应该“删除”,但是当我运行一个简单的测试程序(如下)时,我为 arraySize 或 numLoops 设置的数字似乎没有什么区别.这会导致内存泄漏吗?
#include <iostream>
int main()
{
double *array;
const int arraySize = 100000;
const int numLoops = 100000;
for (int i = 0; i < numLoops; i++)
{
// do I need to call "delete [] array;" here?
array = new double[arraySize];
}
int x;
std::cin >> x; // pause the program to view memory consumption
delete [] array;
return 0;
}
最佳答案
不,这还不够。
每次调用 new
或 new[]
时,都会分配一些内存,并给出该内存的地址(以便能够使用它).每一 block 内存最终都必须被delete
d(或delete[]
d)。
您将该地址存储在 array
中,但随后在下一次迭代中立即覆盖它。因此,您无法删除
- 分配给您的所有内存片段。因此你有内存泄漏。
关于c++ - 在同一个指针上调用 new [] 两次而不调用 delete [] 是否会导致内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9979776/