Qcache ничего не хранит в Qt 5.6

Я пытаюсь сохранить QStrings в QCache, но после того, как я закрываю приложение и запускаю его снова, кэш снова пуст.

вот мой код cpp:

QString fileName = QFileDialog::getOpenFileName(this, tr("Select a ply file"), homeDir, ".ply (*.ply)");
fileCache.insert(12, &fileName);
qDebug() << QString("# items in cache: ") + QString::number(fileCache.count());
ui->file_name_textEdit->insertPlainText(fileName);

и у меня есть кэш, объявленный в заголовке:

QCache<int, QString> fileCache;

Я также попытался сохранить значение tmp, потому что до того, как я получил эту ошибку утечки памяти:

free(): invalid size: 0x00007fffa0d96600 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x77725)[0x7fed3ebc1725]
/lib/x86_64-linux-gnu/libc.so.6(+0x7ff4a)[0x7fed3ebc9f4a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7fed3ebcdabc]
/home/pendar/projects/paintsquad/build/pcl_visualizer(_ZN6QCacheIi7QStringE5clearEv+0x39)[0x473b0f]
/home/pendar/projects/paintsquad/build/pcl_visualizer(_ZN6QCacheIi7QStringED1Ev+0x19)[0x46f3d1]
/home/pendar/projects/paintsquad/build/pcl_visualizer(_ZN9PCLViewerD1Ev+0x6a)[0x468532]
/home/pendar/projects/paintsquad/build/pcl_visualizer(main+0x83)[0x463c79]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7fed3eb6a830]
/home/pendar/projects/paintsquad/build/pcl_visualizer(_start+0x29)[0x463b29]

Поэтому я попробовал это:

QString *tmp = new QString("hi");
fileCache.insert(12, tmp);

Теперь я не получаю никаких ошибок, но кэш все еще пуст при перезапуске!

1 ответ

  1. Поэтому мне нужно было использовать QSettings вместо этого, который обеспечивает постоянство при закрытии и открытии приложения.