尝试读取qt中的大文件时出现bad_allock错误

时间:2012-01-03 16:31:39

标签: qt qt4

如何在qt中读取大于600mb的文件? 我正在尝试使用file.readAll()读取文件。它适用于小文件。但它在大文件中出现bad_alloc错误?我该怎么办?

3 个答案:

答案 0 :(得分:2)

尝试添加

QMAKE_LFLAGS += -Wl,--large-address-aware

到您的qt pro文件,根据我的理解,它将允许进程累积超过2GB的内存。

答案 1 :(得分:1)

考虑以块的形式读取文件,而不是一次性读取。当然,您的目标可能是在文本编辑器中显示整个文件,在这种情况下,部分加载它会更复杂。你很模糊,所以很难更具体。

答案 2 :(得分:1)

不要这样做。

在一次操作中很少需要将大文件加载到内存中。

您无法为用户导航或操作加载这么多信息,因此,如果我怀疑您只是在光盘上存放文件和将文件发送到其他地方之间作为媒介,那么请使用一种机制来处理将Qfile作为 QIODevice ,而不是将其完全加载为QString或QByteArray。

如果您(或您的客户)使用32位系统在Windows上,但可能拥有超过2Gb的RAM,您可能需要了解允许的/LARGEADDRESSAWARE链接器选项你支持大于2Gb的地址,如果没有将文件加载到内存中,可能也会改善你的情况。