0
나는 QNetworkReply
을 가지고 있는데, 다운로드 한 바이트를 QByteArray
에 저장하고 싶습니다. Qt : QByteArray에서 잘못된 alloc 예외를 디버깅하는 방법?
connect(_replyRef, SIGNAL(readyRead()), this, SLOT(PushDownloadedBytesToFile()));
void PushDownloadedBytesToFile()
{
_internalBufferBytes.append(_replyRef->readAll());
}
문제
는 크기가 약 33552950.나는 문제가 아니면이 어떻게 디버깅 할 수 있습니다 무엇을 이해하지 못하는 때 나는 bad alloc
를 얻을 수 있다는 것입니다.
버퍼 전체를 읽지 않고 청크 단위로 읽는 것은 어떨까요? 이 파일은 32Mb이고, 다음 파일은 512Mb가 될 수 있습니다. 이러한 대용량 파일의 처리는 한 장씩 수행해야합니다. –
음 ... 나는 청크로 청크를 읽었지만, ..... 이유로 인해 40Mb의 버퍼를 가져야합니다. – user3132974
잘못된 alloc에 대해 두 개의 reasos가있을 수 있습니다. 메모리가 충분하지 않고 힙이 손상되었습니다. 40MB는 요즘 꽤 평범한 크기로 보입니다. 그래서 valgrind는 당신의 친구입니다. –