История изменений
Исправление MOPKOBKA, (текущая версия) :
Массивы легко могут располагаться в нескольких страницах/сегментах структурированного значения адреса. Компилятор никогда не отловит переход адреса элемента массива через структуры адресов.
Никто его и не обязывает, если что то UB, это не значит что компилятор будет это ловить. А если представить все же некую платформу, с сегментами и где UB ложиться на архитектуру, то компилятор может просто использовать дальние указатели там где он не уверен, и ближние там где он точно знает что массив не пересекает сегмент, или вообще запретить массивы больше одного сегмента и распологать их по границам, тогда именно компилятору ничего ловить не надо, сломается код в рантайме.
А из прошедшего через меня кода, в большинстве случаев, весь код пишется с учетом линейности адресного пространства внутри выбранной модели памяти
Я даже не знаю современных платформ без линейных адресов.
В embedded компиляторах можно управлять структурой адреса
Это уже не относится к стандарту С.
Не призываю никого нарушать некие стандарты Си, просто поделился своим мнением, что универсальных указателей в языке Си/С++ не существует, как и не существует универсальных «правил» для работы с «универсальными» указателями. Всё имеет свои пределы «универсальности».
Я именно про стандарт говорил, реальность конечно отличается.
Исходная версия MOPKOBKA, :
Массивы легко могут располагаться в нескольких страницах/сегментах структурированного значения адреса. Компилятор никогда не отловит переход адреса элемента массива через структуры адресов.
Никто его и не обязывает, если что то UB, это не значит что компилятор будет это ловить. А если представить все же некую платформу, с сегментами и где UB ложиться на архитектуру, то компилятор может просто использовать дальние указатели там где он не уверен, и ближние там где он точно знает что массив не пересекает сегмент, или вообще запретить массивы больше одного сегмента и распологать их по границам, тогда именно компилятору ничего ловить не надо, сломается код в рантайме.
А из прошедшего через меня кода, в большинстве случаев, весь код пишется с учетом линейности адресного пространства внутри выбранной модели памяти
Я даже не знаю современных платформ без линейных адресов.
В embedded компиляторах можно управлять структурой адреса
Это уже не относится к стандарту С.
Не призываю никого нарушать некие стандарты Си, просто поделился своим мнением, что универсальных указателей в языке Си/С++ не существует, как и не существует универсальных «правил» для работы с «универсальными» указателями. Всё имеет свои пределы «универсальности».