Проверьте границы STL в Debug и Release с MinGW
Я работаю над проектом (поселенцы 2.5 возвращаются к корням именно), который страдает некоторыми проблемами. Я надеюсь, что смогу решить некоторые из них, используя только stl-контейнеры и проверку границ.
Так возможно ли как-то использовать проверку границ в контейнерах STL также в режиме выпуска? Таким образом, мы могли бы использовать (менее производительную) версию, которая делает их и вылетает / выдает ошибку?
Сервер сборки использует MinGW для кросс-компиляции из Linux в Windows и Apple.
Редактировать: []-оператор используется исключительно. Переход на.at() потребовал бы большого действия поиска и замены, которое в какой-то момент должно быть отменено. Лучше всего, если есть определение или что-то, что переключает []-behaviour на.at()
1 ответ
Первый подход
Вы можете положиться на исключения для проверки проверки границ с использованием контейнера STL. Это включено как в режиме отладки, так и в режиме выпуска.
Например, std::vector::at создает исключение вне диапазона, если оно выходит за пределы.
Второй подход
Если вы используете оператор [] и не хотите менять свой код, вы можете включить _GLIBCXX_DEBUG
флаг для обязательной проверки.