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

标签 c++ boost circular-buffer

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

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

buffer 是类 accumlator 的一个对象。

我在这里尝试将字节数组转换为短裤。代码抛出此运行时错误并终止。

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

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

index 是循环缓冲区的迭代器。

boost::cb_details::iterator::reference boost::cb_details::iterator::operator*() const [with Buff = boost::circular_buffer, Traits = boost::cb_details::nonconst_traits >, boost::cb_details::iterator::reference = char&]: Assertion `m_it != 0' failed.

我什至追踪到文件 boost/circular_buffer/detail.hpp

断言条件检查 - 迭代器是否指向结束。 如果它指向结束,那么它会抛出断言。

提前致谢。

最佳答案

您似乎没有将索引分配给一个值。 operator* 正在进行运行时检查以确保它指向有效(非 0)值。

关于c++ boost迭代器抛出断言并且程序终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9357190/

相关文章:

c - 使用直接指针操作的环形缓冲区实现问题

C - 带 pthreads 的循环字符缓冲区

c++ - sstream 无法正常工作?

c++ - 我可以运行一个存储的 lambda,其捕获的值不再在范围内吗?

c++ - Boost 1.64 在 solaris 上构建错误

c++ - 基本 boost 正则表达式问题

c++ - 与 void* 类型的内存分配混淆?

c++ - Visual C++ parallel_for + vector 访问冲突

c++ - 不满意链接错误 : undefined symbol _ZN5boost6system16generic_categoryEv in java (JNI)

string - 如何找到字典序最小的字符串旋转数?