使用boost :: random时崩溃

时间:2011-03-24 20:33:43

标签: boost random crash

我遇到了一个比较严重的问题:boost :: random。 背景:我在Windows 7 x64上使用TDM-GCC x64。编译器选项是-g -Wall -fexceptions 我使用相同的编译器环境构建Boost,但这在使用random时无关紧要,因为它只是标题(?)

所以现在我的问题: 我有这个功能:

#define PRNG_GENERATOR boost::mt19937

COORD function_g(int depth)
    {
        double _range;
        _range = 1/(depth + 1.0f);

        boost::uniform_real<double> range(-_range, _range);

        boost::variate_generator<PRNG_GENERATOR&, boost::uniform_real<double> > v_png(*this->m_prng, range);

        return v_png();
    }

当我调用此函数时,我的程序因ntdll.dll模块中的c0000026错误而崩溃。 崩溃始终由gdb在boost的随机数引擎的() - 操作符的第一行显示(在这种情况下,它位于第319行的文件mersenne_twiseter.hpp中,即“if(i == n)” - 实际上并不是我预期会导致崩溃的事情。 而更奇怪的是,这次崩溃刚刚出现 - 我没有提交任何代码更改,只是一个(干净的)重新编译,并且在第一次显示崩溃之后的每次构建都崩溃....!

我现在花了大约一个小时在互联网上搜索这个神秘的c0000026错误,但没有找到任何有价值的东西....

有人提示如何解决此问题?

1 个答案:

答案 0 :(得分:1)

您尚未向我们展示如何初始化this->m_prng。你确定它指向有效 boost::mt19937类型的对象?其余部分看起来还不错,据我所知。