Является ли неопределенное поведение формированием диапазона указателя из адреса стека?

Некоторые программисты C или C ++ с удивлением обнаруживают, что даже сохранение недопустимого указателя является неопределенным поведением . Однако для массивов кучи или стека можно хранить адрес одного за концом массива, что позволяет сохранять «конечные» позиции для использования в циклах.

Но это неопределенное поведение для формирования диапазона указателя из одной переменной стека, например:

char c = 'X';
char* begin = &c;
char* end = begin + 1;

for (; begin != end; ++begin) { /* do something */ }

Хотя приведенный выше пример довольно бесполезен, он может быть полезен в том случае, если какая-то функция ожидает диапазон указателя, и у вас есть случай, когда у вас просто есть одно значение для его передачи.

Это неопределенное поведение?

9
задан Community 23 May 2017 в 11:54
поделиться