Qt:如何调试 QByteArray 中的错误分配异常?

Qt : How to debug a bad alloc exception in QByteArray?

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

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

问题是当大小约为 33552950 时我得到了 bad alloc

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

根据您的评论,关于在缓冲区中保留 40 MB,我建议使用 QByteArray::reserve() API 提前预留这么多内存(更多会更好)。但是,对于 QByteArray,您必须维护总大小、消耗大小、当前索引等。

另一种解决方案是在需要时将 QStringreserve(). You wouldn't have to maintain the details. You can simply use QString::append() and then convert it to QByteArray using QString::toUtf8() 一起使用。