Достаточно ли очистки вектора связующего вектора класса, чтобы очистить все? - PullRequest
3 голосов
/ 07 апреля 2020

Давайте рассмотрим класс, который содержит вектор:

AGivenClass
{

public:

 vector< int > vec_int;

};

и давайте рассмотрим, что у нас есть экземпляр, который является вектором класса:

vector < AGivenClass > vec_instance;

Мой вопрос : Достаточно ли

vec_instance.clear()

для освобождения памяти, в том числе для ранее заполненного vec_int, внутреннего для класса?

1 Ответ

2 голосов
/ 07 апреля 2020

vec_instance.clear() уничтожит все содержащиеся в нем объекты, но не освободит буфер памяти, используемый для их хранения. Емкость вектора не изменится. Поэтому вам также необходимо вызвать vec_instance.shrink_to_fit(), чтобы убедиться, что вся память освобождена. Пропускная способность вектора должна стать 0 впоследствии.

...