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
,您必须维护总大小、消耗大小、当前索引等。
另一种解决方案是在需要时将 QString
与 reserve(). You wouldn't have to maintain the details. You can simply use QString::append()
and then convert it to QByteArray
using QString::toUtf8()
一起使用。
我有一个 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(). You wouldn't have to maintain the details. You can simply use QString::append()
and then convert it to QByteArray
using QString::toUtf8()
一起使用。