QList<int>的内存问题想不明白了,请大家指点一下.
我的测试代码如下:
#include <QtCore/QCoreApplication>
#include <QList>
#include <QDebug>
QList<int> list;
void testlist()
{
for(int i=0;i<20;i++){
list<<(i+20); ///<--------增加到链表中的是 局部变量, 不是通过内存来分配的,
}
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
testlist();
for(int i=0;i<20;i++)
qDebug()<<list.at(i);
return a.exec();
}
而我的理解是 临时变量是分配到栈里的, 那么在出栈的时候, 自然就释放了,那么链表中的数据当然也就没有了, 为什么在接下来链表打印时还可以打印出来, 不明白,往各位指教一下,谢谢.
[解决办法]
好吧,上边的已经说了原因了。<<操作,list自己malloc出空间存放int了,你以为把临时变量的地址放进去了,其实是一次deep copy.