16,173
社区成员
发帖
与我相关
我的任务
分享
std::unique_ptr<QHash<QString, std::unique_ptr<Settings> > > StList;
或std::shared_ptr
不支援shared_ptr或unique_ptr,Qt自己也有提供smart pointer
如果你对smart pointer有疑问,可以另外选个帖子发问
楼主大概没读过meyers的effective series?对于要用c++开发案子的人来说
阅读meyers的书会有很大的帮助,如果你还没读过
请快点跑去书店买回来啃,不是走去买,是跑去买
#include <QtCore>
#include <QtGui>
void memory_alloc_release()
{
QHash<QString,QHash<QString,QHash<QString,QString> > > Options;
for(int i=0;i<10;i++)
{
QHash<QString,QHash<QString,QString> > Tmp2;
for(int m=0;m<1000;m++)
{
QHash<QString,QString> Tmp1;
Tmp1.insert(QString::number(m),QString::number(m));
Tmp2.insert(QString::number(m),Tmp1);
}
Options.insert(QString::number(i),Tmp2);
}
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
while(1){
memory_alloc_release();
}
QLabel w;
w.show();
return a.exec();
}
我的环境下,memory一直在5M~7.XM下变化
memory确实有不断的回收和释放
smart pointer的使用不难
快点掌握他吧,处理上层逻辑的时候
smart pointer会帮你省下很多时间的
至少你以后除错的时候不用再担心有哪里
忘了release resource
我以前用C的时候总是得将忘了release这个
可能性纳入计算,用了smart pointer后我再也不曾
为了这问题而烦恼了if(1)
{
QHash<QString,QHash<QString,QHash<QString,QString> > > Options;
for(int i=0;i<10;i++)
{
QHash<QString,QHash<QString,QString> > Tmp2;
for(int m=0;m<1000;m++)
{
QHash<QString,QString> Tmp1;
Tmp1.insert(QString::number(m),QString::number(m));
Tmp2.insert(QString::number(m),Tmp1);
}
Options.insert(QString::number(i),Tmp2);
}
}
return App.exec();