2014-10-15 2 views
1

Должен ли я вызвать delete на деструкторе класса, который использует std :: vectors? Если нет, то почему?Вызов delete на std :: vector

Например:

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

Нет, вам не нужно явно уничтожать или удалять его. Вектор удерживается значением в вашем классе, поэтому он будет автоматически уничтожен, а данные внутри вектора будут удалены собственным деструктором вектора.

Термин для всех это RAII, и он работает очень хорошо.

2

Нет, вы не знаете. Вы используете только delete в соответствии с использованием new. Поскольку (в этом случае) вы использовали класс автосохранения, vector будет автоматически удален, если Test, которому принадлежит его, уничтожен.

Смежные вопросы