Форум программистов, компьютерный форум CyberForum.ru

Проверка индексов при доступе к вектору через [] - C++

Восстановить пароль Регистрация
 
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
22.08.2016, 09:54     Проверка индексов при доступе к вектору через [] #1
При написании кода сталкиваюсь с дилеммой: использовать at или operator [] при работе с std::vector или подобными вещами. Для релиза то явно лучше [], а вот для ловли багов лучше at. Но есть вариант лучше: использовать assert'ы внутри [], которые будут отключаться при релизе. Можно ли включить такой функционал в GCC (MinGW)? И если нет, то может есть другой вариант которого я не вижу?

Добавлено через 6 минут
А все, нашел, надо компилировать с D_GLIBCXX_DEBUG. Выдавалось бы еще место вызова где был выход за рамки, а не просто ошибка, было бы вообще замечательно.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2016, 09:54     Проверка индексов при доступе к вектору через []
Посмотрите здесь:

C++ Использование массива индексов при сортировке
CreateDispatch не работает при доступе к контактам Outlooka C++
Отказ в доступе при сохранении файла C++
C++ Обращение к вектору полученному через указатель
C++ Можно ли значение вектора A передать вектору B через swap?
Поймать exception, который вылетает при доступе к элементу пустого вектора C++
Ошибка при доступе к полям структуры C++
C++ Поиск, Сортировка по Вектору в с++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
hoggy
5228 / 2119 / 403
Регистрация: 15.11.2014
Сообщений: 4,806
Завершенные тесты: 1
22.08.2016, 10:16     Проверка индексов при доступе к вектору через [] #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от dimcoder Посмотреть сообщение
с дилеммой: использовать at или operator [] при работе с std::vector или подобными вещами. Для релиза то явно лучше [], а вот для ловли багов лучше at.
здесь нет дилемы. используйте []



Цитата Сообщение от dimcoder Посмотреть сообщение
Выдавалось бы еще место вызова где был выход за рамки
1.
запускаемся под отладкой

2.
подрываемся на ассерте.

3.
так как запуск был под отладкой,
то на ассерте срабатывает бряк

4.
смотрим call stack.
видим вызовы всех функций.

5.
и подымаемся по стеку на уровень выше
и видим код вызова оператор[].

6.
PROFIT!!!!????
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
22.08.2016, 13:03  [ТС]     Проверка индексов при доступе к вектору через [] #3
Цитата Сообщение от hoggy Посмотреть сообщение
смотрим call stack.
видим вызовы всех функций.
Да, это мне и надо видимо. Вот и дебаггер придется осваивать какой-то. Спасибо!
Yandex
Объявления
22.08.2016, 13:03     Проверка индексов при доступе к вектору через []
Ответ Создать тему
Опции темы

Текущее время: 01:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru