【发布时间】:2018-04-03 19:04:18
【问题描述】:
我有一个QNetworkReply,我想将下载的字节存储在QByteArray 中。
connect(_replyRef, SIGNAL(readyRead()), this, SLOT(PushDownloadedBytesToFile()));
void PushDownloadedBytesToFile()
{
_internalBufferBytes.append(_replyRef->readAll());
}
问题是当大小约为 33552950 时,我得到一个 bad alloc。
我不明白是什么问题或如何调试它。
【问题讨论】:
-
不读取所有缓冲区,而是逐块读取呢?这个文件是32Mb,下一个可以是512Mb。处理这么大的文件应该一块一块地处理。
-
嗯...我逐块读取它,但出于.....原因我需要在缓冲区中有 40Mb
-
错误分配可能有两个原因:内存不足和堆损坏。现在 40MB 似乎是一个很正常的大小,所以
valgrind是你的朋友。
标签: c++ qt qbytearray bad-alloc