问:如何在QByteArray中调试错误的alloc异常?

问题描述 投票:0回答:1

我有一个QNetworkReply,我想将下载的字节存储在QByteArray中。

connect(_replyRef, SIGNAL(readyRead()), this, SLOT(PushDownloadedBytesToFile()));
void PushDownloadedBytesToFile()
{
     _internalBufferBytes.append(_replyRef->readAll());
}

问题是,当大小约为33552950时,我得到一个bad alloc

我不明白是什么问题或我如何调试它。

c++ qt qbytearray bad-alloc
1个回答
0
投票

从你的评论,关于保持40 MB缓冲区,我建议使用QByteArray::reserve() API预先保留这么多内存(更多会更好)。但是,使用QByteArray,您必须保持总大小,消耗大小,当前索引等。

另一种解决方案可能是使用QStringreserve()。您不必维护细节。您可以简单地使用QString::append(),然后在需要时使用QByteArray将其转换为QString::toUtf8()

© www.soinside.com 2019 - 2024. All rights reserved.