Проверьте границы STL в Debug и Release с MinGW

Я работаю над проектом (поселенцы 2.5 возвращаются к корням именно), который страдает некоторыми проблемами. Я надеюсь, что смогу решить некоторые из них, используя только stl-контейнеры и проверку границ.

Так можно ли как-то использовать проверку границ в контейнерах STL также в режиме выпуска? Таким образом, мы могли бы использовать (менее производительную) версию, которая делает их и вылетает / выдает ошибку?

Сервер сборки использует MinGW для кросс-компиляции из Linux в Windows и Apple.

Редактировать: [] -оператор используется исключительно. Переход на .at () потребовал бы большого действия поиска и замены, которое в какой-то момент должно быть отменено. Лучше всего, если есть определение или что-то, что переключает [] -behaviour на .at ()

0

Решение

Первый подход

Вы можете положиться на исключения для проверки проверки границ с использованием контейнера STL. Это включено как в режиме отладки, так и в режиме выпуска.

Например станд :: вектор :: на выбрасывает исключение вне диапазона, если находится за пределами.

Второй подход

Если вы используете оператор [] и не хотите менять свой код, вы можете включить _GLIBCXX_DEBUG флаг для обязательной проверки.

1

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