Может ли произойти ошибка сегмента, если вы выполняете арифметические операции итератора за пределами ограничений?C++

Программы на C++. Форум разработчиков
Anonymous
Может ли произойти ошибка сегмента, если вы выполняете арифметические операции итератора за пределами ограничений?

Сообщение Anonymous »

-> случайный допустимый векторный итератор

Код: Выделить всё

const int kLookAheadIndex
-> случайное число

Код: Выделить всё

 auto it_ahead = std::max(it - kLookAheadIndex, path.cbegin());  // get a look-ahead point to look at
Я знаю, что это «неопределенное поведение», поскольку я не проверяю, приводит ли оно к тому, что kLookAheadIndex дает итератор, выходящий за пределы — вычитание может вернуть итератор слева от path.cbegin(). Но все же, вызовет ли эта строка кода когда-нибудь сама по себе ошибку сегментирования, поскольку разыменование не выполняется?

Код: Выделить всё

2025-11-13T12:49:06,117355+00:00 [139806]: segfault at 7f779bffed10 ip 00007f7880937d9c sp 00007f77adff1ba0 error 4 in libbase_planning.so[7f78807e9000+372000] likely on CPU 15 (core 27, socket 0)
Минимальный пример, в котором нет сегментации: https://onlinegdb.com/LKYPy2wGFK

Подробнее здесь: https://stackoverflow.com/questions/798 ... ond-limits

Вернуться в «C++»