Скажем, что у меня есть следующие две функции:
1
int * foo()
{
int b=8;
int * temp=&b;
return temp;
}
2
int * foo()
{
int b=8;
return &b;
}
Я не получаю предупреждения для первого (например, функция возвращает адрес локальной переменной), но я знаю, что это незаконно, поскольку b
исчезает из стека, и мы оставляем указатель на undefined память.
Итак, когда мне нужно быть осторожным при возврате адреса временного значения?