繁体   English   中英

QString在QVector内存泄漏

[英]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));
}

我的程序使用470 MB的RAM,当这个:

QVector< QPair<qint32, QString> > vector(10000000);
QString temp2 = "Vasya";
for (int i = 0; i < 10000000; ++i)
{
    vector.replace(i, qMakePair(i, temp2));
}

它只有90 MB的RAM?

因为内部QString被优化以共享const对象的内存。 每次调用fromUtf8时,第一种情况都需要分配内存。 在相反的第二种情况下,总是可以重用现有const temp2内存

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM