2

I want to ask that if the QFile().readAll () , returns a QByte Array then does it create a byte array on Physical memory or just provides a linked list address containing the positions of Bytes?.

can it create problem in the case of large files which are in GBs.

4

1 回答 1

4

是的,它确实在 RAM 中创建了一个字节数组,复制了硬盘中的整个内存。QFile::readAll()所以你会遇到在大文件上运行的问题。

的文档QString QTextStream::readAll()说:

读取流的全部内容,并将其作为 QString 返回。在处理大文件时避免使用此功能,因为它会消耗大量内存。

它没有提到QByteArray QIODevice::readAll()(由 继承QFile),但它是相同的,因为 a 中的指针QByteArray无法指向硬盘中的某个位置(必须是操作系统分配给程序的虚拟内存中的地址,即堆栈或堆)。

于 2013-09-05T04:35:38.543 回答