什么是QBytearray,由QFile readAll()返回

时间:2013-09-05 03:43:35

标签: qt qt4.7

我想问一下,如果QFile()。readAll()返回一个QByte数组,那么它是在物理内存上创建一个字节数组还是只提供一个包含Bytes位置的链表地址?

如果是以GB为单位的大型文件,可能会产生问题。

1 个答案:

答案 0 :(得分:4)

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

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

  

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

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