c++boost迭代器抛出断言,程序终止

c++ boost iterator throwing assert and programme terminates

本文关键字:程序 终止 断言 迭代器 c++boost      更新时间:2023-10-16

我在这一行得到以下错误:

const short pcmSample = *reinterpret_cast<const short*>(*(buffer->index));

CCD_ 1是类别CCD_ 2的对象。

在这里,我试图将一个字节数组转换为short。代码引发此运行时错误并终止。

class accumlator : public boost::circular_buffer<char>
{
  public:
    boost::circular_buffer<char>::iterator index;
};

我已经将迭代器初始化为指向缓冲区的开始

并且CCD_ 3是循环缓冲器的迭代器。

boost::cb_details::迭代器::引用boost::cb_details::iterator::operator*()const[withBuff=提升::圆形缓冲区,特性=boost::cb_details::noncast_traits>,boost::cb_details::迭代器::reference=char&]:断言`m_it!="0"失败。

我甚至已经跟踪到文件boost/cycle_buffer/detail.hpp

assert条件检查迭代器是否指向end。如果它指向结束,则抛出断言。

提前谢谢。

似乎没有为值分配索引。运算符*正在进行运行时检查,以确保它指向有效(非0)值。