将矢量转换为数组.如何释放内存?

rkg*_*ghz 0 c++ arrays pointers vector

我在双打的向量转换成double数组中所看到这里:

不同的是,我想将指针a作为函数参数返回:

void getArray(double* a)
{
    std::vector<double> v;
    a = &v[0];
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,什么时候内存a被解除分配?或者我必须自己打电话delete[] a,这似乎很奇怪,因为我没有分配内存new.我已经阅读了上述答案的评论,但我仍不清楚.

Aly*_*sen 6

a当向量v被破坏时,指向的内存被释放.在这种情况下,这是在函数的末尾getArray.

  • @Basilevs内存管理的一个好方法是将向量保持为向量并管理内存而不是自己手动管理它.这真的取决于最终目标.对于不应该做的事情的示例使用可能表明这是正确的事情.现代C++程序员应该尽量避免使用原始指针. (2认同)