visual Ubuntu — несовместимость Windows с C ++ / Vector не входит в диапазон

Проекты C ++, которые я написал и запустил без проблем в Ubuntu, возвращают исключение «векторный индекс вне диапазона», когда я запускаю их в Windows. Я использую Windows 7 и Visual C ++ 2008 Express.

Я надеюсь, что это имеет смысл для кого-то.

-1

Решение

Версия STL, поставляемая Microsoft, поставляется с проверенные итераторы, который при запуске в режиме отладки гарантирует, что ваши индексы вектора находятся в диапазоне. По умолчанию такая проверка не выполняется в GCC.

1

Другие решения

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

Следующий шаг в значительной степени зависит от вас: найдите проблему в своем коде и исправьте ее. К сожалению, поскольку вы еще не опубликовали код, по сути невозможно дать гораздо более подробный совет о том, что вы должны делать или как это сделать. Единственная подсказка, о которой я могу подумать, это то, что отладчик в VC ++ имеет отличную функцию трассировки стека, поэтому, если вы запускаете код под отладчиком, и он не работает, довольно легко вернуться к стеку, чтобы найти код, который вызвал функция (которая вызывала функцию и т. д.), в которой была обнаружена проблема.

1

По вопросам рекламы [email protected]