私は c++11 ランダム ライブラリを試していて、奇妙な問題に遭遇しました。私のコードは正常にコンパイルされ、Eclipse 内で実行されますが、シェル (この場合は Linux で bash) で実行可能ファイルを実行しようとするとすぐに、コア ダンプが発生します。Eclipse に特別な環境変数があるかどうかを確認しましたが、そうではないようです。
私の謙虚なコード:
std::mt19937 eng(time(NULL));
std::uniform_int_distribution<int> uniformEnergy(0,E.size()-1);
std::uniform_real_distribution<double> uniformProb(0,0.1);
for (int i = 0; i < 10; i++) {
int E_r = uniformEnergy(eng);
float p_r = uniformProb(eng);
...
そして、random.h 内に一見無限に見える (4000 後にあきらめた) スタックを持つセグ フォールト:
#0 0x0000000000403af4 in std::uniform_int_distribution<int>::param_type::b (
this=<error reading variable: Cannot access memory at address 0x7fffc1381ff8>)
at /usr/include/c++/4.6/bits/random.h:1636
1636 b() const
私の端末では何が間違っているのに、Eclipse ではうまく動作するのでしょうか?
編集: 私は自分でコードをコンパイルしようとしましたが、正常に動作し、何らかの理由でEclipseによって作成された実行可能ファイルが悪いと思いました. 何か案は? 編集 2もちろん、これは私の側の愚かなエラーです。E.size() は、実行中のディレクトリによって異なり、(おそらく) ゼロになりました。
顔やし..