Сбой при использовании boost :: random - PullRequest
0 голосов
/ 24 марта 2011

У меня относительно серьезная проблема с boost :: random. Справочная информация: я использую TDM-GCC x64 на Windows 7 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();
    }

Когда я вызываю эту функцию, моя программа падает с ошибкой c0000026 в модуле ntdll.dll. Сбой всегда отображается с помощью gdb в первой строке () -оператора механизма ускорения случайных чисел (в данном случае он находится в файле mersenne_twiseter.hpp в строке 319, где указано «if (i == n)» - на самом деле не то, что я ожидал бы вызвать аварию). И еще более странно то, что этот сбой только что появился - я не зафиксировал никаких изменений кода, просто (чистая) перекомпиляция и каждая сборка после первого показа сбоя просто вылетает ....!?

Сейчас я провожу около часа в поисках в Интернете этой загадочной ошибки c0000026, но не нашел ничего ценного ....

Кто-то получил совет, как решить эту проблему?

1 Ответ

1 голос
/ 25 марта 2011

Вы не показали нам, как инициализируется this->m_prng. Вы уверены, что это указывает на действительный объект типа boost::mt19937? Насколько я могу судить, все остальное выглядит нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...