2011-09-25 7 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()가 도움이되지 않습니다. 내 소스 코드 сode zalil.ru/31758142 –