4

簡単なGoogle検索で見つけたこのサンプルを使用して、ディレクトリを反復しようとしました:

namespace bf = boost::filesystem;
bf::path p("somedir");
bf::directory_iterator end_iter;
for (bf::directory_iterator iter(p); iter != end_iter; ++iter) {

}

ただし、これをターミナルから実行すると、デフォルトのコンストラクターによって次のようになります testapp(6538) malloc: *** error for object 0x10fee9820: pointer being freed was not allocated。さらにデバッグすると、これは directory_iterator のコンストラクターで発生することがわかりました。これは他の誰かに起こりましたか?これを NetBeans で実行すると、すべて正常に動作します。

OSX 10.8.3 と GCC 4.8 を使用しています

4

1 に答える 1

1

私はこの正確な問題に遭遇しました。私にとっての問題は、Boost ライブラリが、自分のプロジェクトで使用していたものとは異なる C++ コンパイラでコンパイルされたことでした (Boost の場合は clang で、私のものは gcc です)。Boost を GCC で再コンパイルし、成功しました。

于 2013-07-30T23:13:05.890 に答える