2011-09-25 80 views
0
QVector<cLibraryRecord> Library; 
... 
Library.push_back(cLibraryRecord(ReaderFullName, BookGenre, BookTitle, AuthorsFullName, IssueDate, ReturnDate)); 
... 
Library.remove(i); 

QVector :: remove()不清除內存。我如何清理內存? 在此先感謝。使用QVector的內存泄漏

+0

你確定'cLibraryRecord'? – deepmax

+0

@БорискаСосиска:是的。如果有泄漏,它更可能在'cLibraryRecord'類中。 – Mat

+0

我認爲'cLibraryRecord'的析構函數有問題。如果可以的話,放入'cLibraryRecord'代碼。 – deepmax

回答

4

QVector.remove()始終調用包含對象的析構函數,但保留大小(由QVector::capacity()返回)不會在您刪除元素時自動收縮。

您可以使用QVector::squeeze()來釋放未使用的保留內存。

但是你也可以在你的班級cLibraryRecord有內存泄漏。

有關更多詳細信息,請參閱Qt文檔:Qt containers growth strategies

+0

可能是我不明白的東西,但我不會在任何地方分配內存。 QVector :: squeeze()沒有幫助。我的來源сodezalil.ru/31758142 –