我听说你每次使用"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;
}
Run Code Online (Sandbox Code Playgroud)
不,这还不够.
每次调用new或new[]分配一些内存时,您将获得该内存的地址(以便能够使用它).每段记忆最终必须是deleted(或delete[]d).
您正在存储该地址array,但在下一次迭代时会立即覆盖它.因此,您无法delete分配已分配的所有内存.因此,您有内存泄漏.
| 归档时间: |
|
| 查看次数: |
3350 次 |
| 最近记录: |