[英]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::reserve()
。 但是,使用QByteArray
,您必須維護總大小,消耗的大小,當前索引等。
另一種解決方案是將QString
與reserve()結合使用 。 您無需維護細節。 您可以簡單地使用QString::append()
,然后在需要時使用QString::toUtf8()
將其轉換為QByteArray
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.