私のクラス(Distribution
と呼ばれる)のいずれかのデストラクタがdouble free or corruption
エラーを投げています。私はバックトレースを行うと、私はこれを取得:Distribution
デストラクタが終了し、それがベクトルにデストラクタを呼び出そうとした場合に ベクトルの二重の空きまたは破損
#7 0x0000000000409212 in std::vector<double, std::allocator<double> >::~vector (
this=0x7fffffff8f70)
at /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../include/c++/4.6/bits/stl_vector.h:351
#8 0x00000000004032c5 in Distribution::~Distribution (this=0x7fffffff8f28)
at Distribution.cpp:165
だからエラーが発生します。それはポインタや何かではなく、倍精度を含む単純なベクトルです。
~vector
がこのエラーの原因となりますか?
ETA:ここでは簡単なコード例を役立てることはできません。私のコードのいくつかの場所では、すべてのことが起こっているし、どの部分が適切であるかについての良い感覚はありません。コメントはメモリ破損の問題だと私はそれを探すことができることを示唆している。
デストラクタでプログラムがクラッシュしたとしても、そのバグはどこにあるのか分かりません。 C++へようこそ。 [mcve]を投稿する必要があります。 –
ベクトルのデストラクタは問題を引き起こしていませんが、あなたのコード内には何か他のものがあります。残念ながら、あなたは多くの情報を提供していません。 –
多くの場合、メモリの問題は後で表示されません。あなたが何かを壊してしまったのであれば、あなたはメモリを解放しようとするまで知らないかもしれません。 –