微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

QStringList是否将数据存储在堆栈或堆上?

如何解决QStringList是否将数据存储在堆栈或堆上?

在下面的代码中:

void fun()
{
    QString aa("aa");
    QString bb("bb");
    QStringList a;
    a<<aa;
    a<<bb;
}

我知道QString将其数据存储在堆上,但是QStringList呢?它是在堆栈上还是在堆上分配一个数组,并且仅将指向数组的指针存储在堆栈上?

解决方法

QList技术上是:

class QList
{
    QListData::Data* p;
};

其中QListData :: Data是:

struct Data 
{
    QtPrivate::RefCount ref;
    int alloc,begin,end;
    void *array[1];
};

所以QList本身会在堆上分配内存并存储指向它的指针。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。