如果在使用C ++创建arr的函数之外调用,delete []是否会释放内存?

时间:2017-11-02 15:31:10

标签: c++ arrays pointers memory-management delete-operator

如果在使用C ++创建arr的函数之外调用,delete []是否会释放内存?

我的意思是,如果我有这样的东西

    double* f()
    {
    double* arr = new double[100];
    return arr;
    }

void ff()
{
double* arr = f();
delete [] arr;
}

是否会在ff()

中正确删除

2 个答案:

答案 0 :(得分:3)

是的,它会被正确删除(与delete相同)。只要你跟踪指针,就可以在分配内存的函数之外删除它。

答案 1 :(得分:2)

是。 new(和new [])返回一个指针,指针就是你需要在相应的delete(和delete [])上使用的。