c++ - 循环中的动态内存分配 - C++

标签 c++ memory-management dynamic

在循环中动态分配内存的最佳方式是什么?

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/

相关文章:

c++ - 整数在调试器中没有预期值

c++ - 在 C++ 中不受控制的循环和函数跳过?

Android memoryInfo 值

jquery - 用jquery动态写出li。元素写入后不可点击

c++ - 如何判断指针是否是指向数组的指针?

cocoa - 具有 "copy"属性的 NSURL 属性。漏水了吗?

python - 在 Python 中重用名称以节省内存

Angular 2动态控件名称attr

c# - ExpandoObject、DynamicObject 和 dynamic 之间的区别

c++ - Windows 上的 CMake 命令 configure_file 有何不同?