2011-02-23 5 views
3

Я использую бинарную сериализацию boost, и она работала до сих пор. У меня есть std::list указателей на сериализации для вывода (oarchive), но сериализации не удается внутри функции объекта сериализации() с диалогом MSVC в:Ускорение утверждения сериализации

R6010 -abort() has been called

и такие строки печатается в консольном окне:

Assertion failed: 0 == static_cast<int>(t) || 1 == static_cast<int>(t), file c:\program files\boost\boost_1_44\boost\archive\basic_binary_oprimitive.hpp, line 91

что это значит?

Проект довольно большой, источники распределены, поэтому я не могу опубликовать его здесь, но я попытался смоделировать эту ошибку в рамках простого проекта - там он отлично работает, что странно.

P.S. Я использую boost 1.44 с MSVC2010EE в Windows XP. Когда я нажимаю «повторить» на «Debug Error!» Окно отладчика показывает стрелка на линии кода следующий для сериализации archive << myList; линии - я имею в виду, похоже произошла ошибка в какой-то деструктор или что-то. Когда я вношу изменения внутри функции serialize() объектов - они будут применяться только тогда, когда я перестрою весь проект (чистый перед компиляцией), но если я просто скомпилирую его (где IDE показывает, что все источники, включая измененный заголовок, перекомпилируются) - no изменения произойдут во время выполнения с последней версии (я попытался с printf()) - это странно. Мог ли я иногда устанавливать некоторые критические определения или что-то еще?

+0

сложно помочь без кода. Можете ли вы сварить это до небольшого воспроизводимого примера и включить его здесь? –

ответ

7

линия в вопросе говорит:

// trap usage of invalid uninitialized boolean which would 
// otherwise crash on load. 

Похоже на какой-то момент вы пытаетесь сериализовать bool, который не был инициализирован. Без дальнейшего кода мы не сможем найти его.

+0

Существует действительно bool! Перед крахом! – Slav

+0

Хм, что я должен делать? #include ? - Нет такого файла. – Slav

+4

Это означает, что вы просто объявляете переменную 'bool tmp;' без ее инициализации: 'bool tmp = 0;' – karlphillip

Смежные вопросы