0

この行で次のエラーが発生します。

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&]: アサーション `m_it != 0' が失敗しました。

これをファイルboost/circular_buffer/detail.hppまで追跡しました

アサート条件のチェック - イテレータが終了を指しているかどうか。end を指している場合は、アサートをスローします。

前もって感謝します。

4

1 に答える 1

1

インデックスを値に割り当てていないようです。operator* は実行時チェックを行って、有効な (0 以外の) 値を指していることを確認しています。

于 2012-02-20T06:58:05.637 に答える