在std :: vector上调用delete

时间:2014-10-15 23:34:49

标签: c++11 stdvector

我是否必须在使用std :: vectors的类的析构函数上调用delete? 如果没有,为什么?

例如:

Test.h:

class Test
{
private:
    // Signal buffer for RAW signal and Moving Average
    std::vector<double> BUFFER; // Sensor signal buffer
...

}

Test.cpp的:

#include "Test.h"

Test::~Test()
{
    // no delete for std:vector as they use STD memory allocation ???
}

Test::Test()
{
    BUFFER.reserve(100); // Who is going to free this memory?
}

由于

2 个答案:

答案 0 :(得分:2)

不,你没有。您只能使用delete来匹配new的使用。由于(在本例中)您使用了自动存储类,因此vector将在拥有它的Test被删除时自动删除。

答案 1 :(得分:2)

不,您不需要明确销毁或删除它。向量由类中的值保存,因此将自动销毁,向量内的数据将被向量自己的析构函数删除。

所有这一切的术语都是RAII,它的效果非常好。