Утечка памяти при использовании QVector - PullRequest
0 голосов
/ 25 сентября 2011
QVector<cLibraryRecord> Library;
...
Library.push_back(cLibraryRecord(ReaderFullName, BookGenre, BookTitle, AuthorsFullName, IssueDate, ReturnDate));
...
Library.remove(i);

QVector :: remove () не очищает память.Как мне почистить память?Заранее спасибо.

1 Ответ

4 голосов
/ 25 сентября 2011

QVector.remove() всегда вызывает деструктор для содержащегося объекта, но зарезервированный размер (возвращаемый QVector::capacity()) не уменьшается автоматически при удалении элементов.

Вы можете использовать QVector::squeeze() для освобождения неиспользуемой зарезервированной памяти.

Но у вас также может быть утечка памяти в вашем классе cLibraryRecord.

Более подробную информацию смотрите в документации Qt: Стратегии роста контейнеров Qt .

...