我有一个QNetworkReply
,我想将下载的字节存储在QByteArray
中。
connect(_replyRef, SIGNAL(readyRead()), this, SLOT(PushDownloadedBytesToFile()));
void PushDownloadedBytesToFile()
{
_internalBufferBytes.append(_replyRef->readAll());
}
问题是,当大小约为33552950时,我得到一个bad alloc
。
我不明白是什么问题或我如何调试它。
从你的评论,关于保持40 MB缓冲区,我建议使用QByteArray::reserve()
API预先保留这么多内存(更多会更好)。但是,使用QByteArray
,您必须保持总大小,消耗大小,当前索引等。
另一种解决方案可能是使用QString
和reserve()。您不必维护细节。您可以简单地使用QString::append()
,然后在需要时使用QByteArray
将其转换为QString::toUtf8()
。