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