小编Liu*_*ing的帖子

请问STL deque pop_front()会自动回收内存吗?

我有一个程序,我收集一些数据并暂时存储在双端队列中

    typedef vector<float> floatVector;
    ...
    floatVector * currRecord;
    deque<floatVector *> data;
    ...
    ...

    for (...)
    {
        ...
        currRecord = new floatVector(10); 
        data.push_back(currRecord);
    }
Run Code Online (Sandbox Code Playgroud)

后来,我想将数据保存到文件中

    while (data.size() > 0) 
    {
        for (int i=0; i < 10; i++) 
        {
            fprintf(fPtr, "%lf\t", data[0]->at(i) );
        }
    fprintf(fPtr,"\n");
    data.pop_front();
    }
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是,这个程序会导致内存泄漏吗?我使用new运算符为每个currRecord向量分配内存.deque pop_front功能会自动回收内存吗?或者我需要放

    delete [] data[0]
Run Code Online (Sandbox Code Playgroud)

之前

    data.pop_front();
Run Code Online (Sandbox Code Playgroud)

?另外,如果data是向量而不是双端队列,那么一切都是一样的吗?谢谢!

c++ memory-leaks stl vector deque

1
推荐指数
1
解决办法
2729
查看次数

标签 统计

c++ ×1

deque ×1

memory-leaks ×1

stl ×1

vector ×1