Недавно я начал программирование в C после того, как некоторое время программировал на С++, и мое понимание указателей немного ржавое.
Я хотел бы спросить, почему этот код не вызывает никаких ошибок:
char* a = NULL;
{
char* b = "stackoverflow";
a = b;
}
puts(a);
Я думал, что, поскольку b
вышел из области видимости, a
должен ссылаться на несуществующую ячейку памяти, и, таким образом, они будут ошибкой во время выполнения при вызове printf
.
Я запустил этот код в MSVC примерно 20 раз, и никаких ошибок не было показано.