在循环中动态分配内存的最佳方式是什么?
1.每次循环释放内存?
int *foo;
for(int i=1;i<10;i++)
{
foo = new int [i];
/*
...
*/
delete foo;
}
或
2.最后释放内存吗?
int *foo;
for(int i=1;i<10;i++)
{
foo = new int [i];
/*
...
*/
}
delete foo;
最佳答案
首先,当您使用new[]
运算符时,您需要将其与delete[]
运算符相匹配,因此您应该执行delete[ ] foo
.
其次,如果您在循环后执行delete[]
,您将只会释放您最后分配的内存,从而导致内存泄漏。
第三,你真的需要使用原始指针吗?你不能使用例如std::vector
相反?
关于c++ - 循环中的动态内存分配 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24914893/