16,225
社区成员
发帖
与我相关
我的任务
分享
class A : public QObject
{
Q_OBJECT
public:
A(QObject *parent=nullptr);
~A();
private:
QMap<QString, QVariant> mmap;
QMap<QString, QObject *> smap;
QVector<double> data;
};
A *a = new A();
void A::add_data(int count)
{
for(int i = 0; i < count; i++)
data.append(10.7891);
}
data 的 size 会不断变大,它不在 *a 的地址空间中吗?你的意思是,*a 对象只是一个像链接似的东西,它内部的数据都是保存在另外开辟的内存空间内?
QVector<double> data;
for(int i = 0; i < 20000000; i++)
data.append(0.0098);
data = QVector<double>(); // 空间在堆上,这里会释放堆上的空间
QVector<double> *data;
data = new QVector<double>();
for(int i = 0; i < 20000000; i++)
data->append(0.0098);
*data = QVector<double>(); // 会释放之前的空间
// data = new QVector<double>(); // 这样就不会释放了