c++ - 使用 QVector 的内存泄漏

标签 c++ qt memory-leaks

QVector<cLibraryRecord> Library;
...
Library.push_back(cLibraryRecord(ReaderFullName, BookGenre, BookTitle, AuthorsFullName, IssueDate, ReturnDate));
...
Library.remove(i);

QVector::remove() 不会清除内存。我怎样才能清理内存? 提前致谢。

最佳答案

QVector.remove() 总是为包含的对象调用析构函数,但保留大小(由 QVector::capacity() 返回)不会自动缩小当您删除元素时。

您可以使用QVector::squeeze() 释放未使用的保留内存。

但是您的类 cLibraryRecord 中也可能存在内存泄漏。

有关详细信息,请参阅 Qt 文档:Qt containers growth strategies .

关于c++ - 使用 QVector 的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7546672/

相关文章:

c++ - §3.3.7/1 第 5 项中突出显示的句子是什么意思?

c++ - 将文本文件读入整数数组

c++ - 套接字:如何在客户端接收/解析数据时将数据发送到没有 'waiting' 的客户端

c++ - 许多小部件似乎对空格键按下事件都有默认行为。如何在不子类化每个小部件的情况下覆盖它?

c++ - 由于连接信号和槽的问题导致代码崩溃

android - Admob 内存泄漏 - 通过使用空 Activity 来避免

c++ - 实时和非实时应用程序的日志记录工具

c++ - 当 QFileDialog::getExistingDirectory 处于事件状态时,QSerialPort 停止响应

memory-leaks - GLib 和 GDBus 的静态分析工具

python - 在python中使用MySQLdb向数据库插入新元素时发生内存泄漏