все же что происходит с локальной переменной по завершению функции?

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

Ничего не чистится (зачем?!), это просто вам так повезло, что ничего не перезаписалось в это место - неопределенное поведение, оно такое неопределенное :)

Понимаете, вы можете перебегать дорогу на красный свет светофора. Можете переходить ее с завязанными глазами и заткнутыми ушами. И у вас это будет отлично получаться... до поры до времени. Как в этом случае :)

→ Ссылка