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

Does QStringList store data on stack or on heap?

在下面的代码中:

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本身在堆上分配内存并存储指向它的指针。