Должен ли я очистить IVAR C ++ вектор ...? - PullRequest
1 голос
/ 26 марта 2011

Если вектор помещен в стек, он будет автоматически уничтожен в конце области его автоматической переменной.

Что если я поместил вектор в класс?

class A
{
    vector<B> bs;  // B is POD struct.
};

Стоит ли убирать его вручную? Если да, то как мне быть?

Ответы [ 2 ]

4 голосов
/ 26 марта 2011

Этот вектор bs будет уничтожен, когда будет вызван деструктор окружающего класса (т.е. деструктор A).

void f()
{
    {
          A a;
          //working with a;

    }//<--- here a goes out of scope, so it's destructor is called; 
            //so not only a is destructed but also a.bs
}
0 голосов
/ 26 марта 2011

Убедитесь, что каждый класс B, который вы используете в векторе, удаляет свое собственное выделенное пространство в деструкторе, поэтому, когда вектор выходит из области видимости, у вас не останется утечек памяти

...