Не удалось подтвердить утверждение сериализации - PullRequest
4 голосов
/ 23 февраля 2011

Я использую двоичную сериализацию boost, и до сих пор она работала хорошо. У меня есть std::list указателей для сериализации для вывода (oarchive), но сериализация завершается ошибкой внутри функции serialize () объекта с диалогом 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. Когда я нажимаю « retry » на « Ошибка отладки! », окно отладчика показывает стрелку на строке кода рядом с сериализацией archive << myList; строки - я имею в виду, кажется, как ошибка произошла в каком-то деструкторе или чем-то еще. Когда я делаю изменения внутри объектов, функция serialize () - они будут применены только тогда, когда я пересобираю весь проект (очищаю перед компиляцией) - но если я просто скомпилирую его (где IDE показывает, что все источники, которые включают измененный заголовок, перекомпилированы) - никаких изменений произойдет во время выполнения с последней версии (я пробовал с printf ()) - это странно. Могу ли я иногда устанавливать критические определения или что-то в этом роде?

1 Ответ

9 голосов
/ 23 февраля 2011

В указанной строке написано:

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

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

...