当前位置: 代码迷 >> QT开发 >> QList<int>的内存有关问题想不明白了,请大家指点一下
  详细解决方案

QList<int>的内存有关问题想不明白了,请大家指点一下

热度:304   发布时间:2016-04-25 03:32:12.0
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.