Программирование / [Перевод] Про управление памятью в C/C++

На stackoverflow задали вопрос резонирующий с недавним постом про избыточность C++. Расширенный ответ на него дал разработчик C#, Эрик Липперт.

Вопрос:

У меня есть следующий код:

int * foo()
{
    int a = 5;
    return &a;
}

int main()
{
    int* p = foo();
    cout << *p;
    *p = 8;
    cout << *p;
}

Он работает без исключений и выдает

5 8

Как это возможно? Разве память локальной переменной доступна вне функции?

Рубрика: Habr