LINUX.ORG.RU

История изменений

Исправление red75prim, (текущая версия) :

Только не надо тут говорить что это и есть UB.

Оно самое и есть. Попытка обратиться к соседней переменной через арифметику указателей - это UB (язык не определяет поведение программы в этом случае). И именно этот факт позволяет компиляторам делать вот это:

Расположение переменных в стеке/памяти не обязано быть каким-то конкретным

Так что искать методом тыка соседние переменные в памяти - задача безнадёжная

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

Исходная версия red75prim, :

Только не надо тут говорить что это и есть UB.

Оно самое и есть. Попытка обратиться к соседней переменной через арифметику указателей - это UB (язык не определяет поведение программы в этом случае). И именно этот факт позволяет компиляторам делать вот это:

Расположение переменных в стеке/памяти не обязано быть каким-то конкретным

Так что искать методом тыка соседние переменные в памяти - задача безнадёжная

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