Доступен ли доступ к изменчивым локальным переменным извне из наблюдаемого поведения функции в C ++?

В C ++ 03 Стандартное наблюдаемое поведение (1.9 / 6) включает чтение и запись изменчивых данных. Теперь у меня есть этот код:

int main()
{
    const volatile int value = 0;
    if( value ) {
    }
    return 0;
}

, который формально инициализирует изменчивую переменную, а затем читает ее. Visual C ++ 10 испускает машинный код, который освобождает место в стеке, помещая туда двойное слово, затем записывает ноль в это место стека, а затем считывает это место.

Для меня это не имеет смысла - никакой другой код или оборудование не могут знать, где находится локальная переменная (поскольку она находится в автоматическом хранилище), и поэтому неразумно ожидать, что переменная могла быть прочитана / записана какой-либо другой стороной. и поэтому в этом случае его можно исключить.

Разрешено ли исключение доступа к этой переменной? Доступ к изменчивому локальному адресу, адрес которого неизвестен какой-либо другой стороне, наблюдаемое поведение?

6
задан sharptooth 26 September 2011 в 09:18
поделиться