将 QByteArray 与 QDataStream 一起使用时 C++ 堆损坏

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

我有一个带有以下签名的函数

bool TraceData::Read(const QSharedPointer<QDataStream>& dataStream, const int formatCode
                     , const int numberOfSamples)

它被调用时 dataStream 位于正确的位置。 现在我需要从数据流中提取浮点数,但遇到堆损坏异常,我不知道为什么。

我正在使用循环来实现此目的

for (auto index = 0; index < numberOfSamples; ++index)
{
    QByteArray buffer{};
    auto cc = dataStream->readRawData(buffer.data(), sizeof(float));
    auto ff = qFromBigEndian<float>(buffer.data());
}

现在,当我使用调试器单步执行时,“ff”被设置为预期值,但是当我跨过该行时,我得到了这个 在此输入图片描述

我无法找出是什么原因造成的

c++ qt
1个回答
0
投票

按照rafix07的建议我只是忘记初始化缓冲区

buffer.reserve(sizeof(float));
© www.soinside.com 2019 - 2024. All rights reserved.