Здравствуйте, Аноним, Вы писали:
А>Подскажите, пожалуйста, что может нехорошего случаться с вектором. А>Вроде ничего особенного не делаю... push_back в одном месте, перебор в другом.. А>Код привести не могу, поскольку там много чего к делу не относящегося, а попытка смоделировать ту же ситуацию в новом проекте успеха не возымела.
А>В дебаг — версии все нормально, а в release — std::out_of_range() при использовании либо итераторов, либо at(). Если осуществлять доступ к элементам вектора через оператор [], то, никаких исключений, что в общем-то понятно, все выводится нормально. При более детальном рассмотрении становится видно, что в релизной версии портится _Mylast — он становится равным нулю, в итоге вот этот макрос _SCL_SECURE_VALIDATE_RANGE и выбрасывает исключение.
А>Вопрос: что может нехорошего случаться в релизной версии и как это найти?
С очень большой вероятностью — некорректная работа с памятью. Причем, совсем не обязательно, в куске кода где у тебя выкидывается исключение. Если используешь Visual Studio — попробуй использовать DCRT, хотя это иногда и неудобно. Профайлер какой-нить.