QVector 内存泄漏中的 QString
QString's in QVector memory leak
为什么当我填充QVector如下:
QVector< QPair<qint32, QString> > vector(10000000);
QString temp;
for (int i = 0; i < 10000000; ++i)
{
temp = QString::fromUtf8("Vasya");
vector.replace(i, qMakePair(i, temp));
}
我的程序使用了470mb的内存,当这个:
QVector< QPair<qint32, QString> > vector(10000000);
QString temp2 = "Vasya";
for (int i = 0; i < 10000000; ++i)
{
vector.replace(i, qMakePair(i, temp2));
}
它只有90mb的RAM吗?
因为内部QString
被优化为共享const对象的内存。第一种情况需要在每次调用fromUtf8
时分配内存。在相反的第二种情况下,总是可以重用现有的const temp2
的内存
相关文章:
- valgrind-hellgrind与泄漏检查的结果不同
- 将 Qvector<uint8_t> 转换为 QString
- 从构造函数抛出异常时如何克服内存泄漏
- malloc() 可能出现内存泄漏
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- 尽管遵循了规则,内存泄漏在哪里
- 为什么调用堆栈数组会导致内存泄漏
- 在简单示例中,Python3 + ctypes 回调会导致内存泄漏
- 使用模板类的自定义列表类型中的内存泄漏
- 为什么以下C++代码中存在内存泄漏?
- Klocwork Inside的资源泄漏
- OpenCV 我应该使用智能指针来防止内存泄漏吗?
- 我是否生成线程并导致内存泄漏?
- 多线程程序中出现意外的内存泄漏
- QStringList vs list<shared_ptr<QString>> 性能比较C++
- 为什么此函数会导致内存泄漏?
- 在 C++ 库中使用cythonized python时内存泄漏
- 需要帮助查找内存泄漏
- QVector 内存泄漏中的 QString