Ответ 1
Используйте трюк подкачки:
#include <vector>
template <typename T>
void FreeAll( T & t ) {
T tmp;
t.swap( tmp );
}
int main() {
std::vector <int> v;
v.push_back( 1 );
FreeAll( v );
}
Возможные дубликаты:
уменьшить емкость stl-вектора
Это обычное поведение для std::vector?
Я знаю, что std::vectors не "освобождает" память при вызове vector.clear(), но как я могу это сделать? Я хочу, чтобы он выпустил все свои ресурсы, как только я его очищу, но я не хочу его уничтожать.
Вот что происходит прямо сейчас. У меня есть класс под названием OGLSHAPE, и я вставляю их в вектор из них. Я надеялся, что как только я сделаю shapevec.clear(), я верну всю свою память, но вернусь только 3/4. Я не уверен на 100%, если это утечка памяти или нет, поэтому я хочу освободить все ресурсы, чтобы убедиться, что это не утечка. Благодаря
Используйте трюк подкачки:
#include <vector>
template <typename T>
void FreeAll( T & t ) {
T tmp;
t.swap( tmp );
}
int main() {
std::vector <int> v;
v.push_back( 1 );
FreeAll( v );
}
Рассмотрим использование трюка подкачки:
вектор (форма).swap(форма);