1

在下面的代码中:

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

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

4

1 回答 1

1

QList 在技术上是:

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

其中 QListData::Data 是:

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

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

于 2020-10-10T19:25:49.410 回答