我是否必须在使用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?
}
由于
答案 0 :(得分:2)
不,你没有。您只能使用delete
来匹配new
的使用。由于(在本例中)您使用了自动存储类,因此vector
将在拥有它的Test
被删除时自动删除。
答案 1 :(得分:2)
不,您不需要明确销毁或删除它。向量由类中的值保存,因此将自动销毁,向量内的数据将被向量自己的析构函数删除。
所有这一切的术语都是RAII,它的效果非常好。