По классике локальные переменные создаются на стеке. То есть там же, куда кладутся параметры функции. А после выхода из функции указатель стека возвращается на прежнее место, как бы освобождая память. Но это не настоящее выделение памяти, то есть она выделяется не из кучи, а гораздо быстрее. И также быстро освобождается.
Но вообще переменной может и не быть в памяти. Зависит от компилятора и его оптимизационных возможностей. Для ускорения программы, что логично, можно для локальной переменной использовать регистр процессора. Например, eax. Названия переменной же нет в готовом машинном коде (в релизной версии), и нет каких-то сложных манипуляций - компилятор это видит и хитрит. А то, что происходит во время дебага, может сильно отличаться от релиза.
Всякую там оптимизацию и отладочную информацию обычно можно настраивать.