4

circular_bufferBoostライブラリと Interprocess ライブラリを使用して、共有メモリに循環バッファを作成しようとしています。問題なく共有メモリにベクトルを作成するために、インタープロセスのドキュメントに記載されている例をコンパイルして実行しました。ただし、Boost circle_buffer を次のように使用するように変更すると、次のようになります。

int main(int argc, char *argv[])
{
    managed_shared_memory segment(create_only, "MySharedMemory", 65536);
    const ShmemAllocator alloc_inst (segment.get_segment_manager());
    MyCircBuffer  *myCircBuf  = segment.construct<MyCircBuffer>("MyCircBuffer")(alloc_inst);
    return 0;
} 

コンパイル エラーが発生します (原因:) segment.construct()。私が間違っていることは何ですか?circular_bufferにリストされているコンテナの 1 つでないため/boost/interprocess/containers、つまり、Interprocess と互換性がないためですか?

ありがとう、

4

1 に答える 1

3

ブースト ユーザー フォーラムで同じ質問をしたところ、提案された解決策は -DBOOST_CB_DISABLE_DEBUG または -DNDEBUG フラグを使用することでしたcircular_buffer。デバッグ サポートは生のポインターに依存しているためです。

他の提案はありますか?

于 2010-02-25T16:35:20.250 に答える