все же что происходит с локальной переменной по завершению функции?
int* test2() {
int a = 900;
return &a;
}
int main(int argc, char* argv[])
{
int* b = test2();
printf("%d", *b); //900
return 0;
}
все же что происходит с локальной переменной по завершению функции ??? в моем понимании после завершения функции test2 переменная a должна "забыться" , то есть значение по этому адресу должно вычиститься. а не тут то было по адресу осталось значение. корректно ли этим пользоваться ???
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Ничего не чистится (зачем?!), это просто вам так повезло, что ничего не перезаписалось в это место - неопределенное поведение, оно такое неопределенное :)
Понимаете, вы можете перебегать дорогу на красный свет светофора. Можете переходить ее с завязанными глазами и заткнутыми ушами. И у вас это будет отлично получаться... до поры до времени. Как в этом случае :)