1
假設我有一個創建QIODevice(例如QFile)的函數,然後返回一個指向由QIODevice構造的QDataStream的指針。在這裏處理內存分配的最佳方式是什麼?很顯然,QIODevice必須被堆分配以在函數終止時保持可用於QDataStream,但是QDataStream的銷燬不會破壞或關閉設備。有沒有處理這個看似普遍的問題的標準方法? 理想情況下,我想要一個返回一個對象(不是指向對象的指針)的函數,該對象的行爲類似於QDataStream,但銷燬後會關閉設備。有效的標準庫輸入流。QDataStream QIODevice內存分配
示例代碼:
QDataStream* getStream(const QString& filename) {
QFile* file = new QFile(filename); // needs to be explicitly deleted later
file->open(QIODevice::ReadOnly);
QDataStream* out = new QDataStream(&file); // same here
return out;
}
我想你的意思是QSharedPointer(QScopedPointer不能被複制)。 –
@RA。好電話編輯相應。 –
謝謝,就是我想要的。 – Dylan