В C ++ 03 Стандартное наблюдаемое поведение (1.9 / 6) включает чтение и запись изменчивых данных. Теперь у меня есть этот код:
int main()
{
const volatile int value = 0;
if( value ) {
}
return 0;
}
, который формально инициализирует изменчивую переменную, а затем читает ее. Visual C ++ 10 испускает машинный код, который освобождает место в стеке, помещая туда двойное слово, затем записывает ноль в это место стека, а затем считывает это место.
Для меня это не имеет смысла - никакой другой код или оборудование не могут знать, где находится локальная переменная (поскольку она находится в автоматическом хранилище), и поэтому неразумно ожидать, что переменная могла быть прочитана / записана какой-либо другой стороной. и поэтому в этом случае его можно исключить.
Разрешено ли исключение доступа к этой переменной? Доступ к изменчивому локальному адресу, адрес которого неизвестен какой-либо другой стороне, наблюдаемое поведение?