Адрес возврата локальной переменной в C

Скажем, у меня есть две следующие функции:

1

int * foo()
{
  int b=8;
  int * temp=&b;
  return temp;
}

2

int * foo()
{
   int b=8;
   return &b;
}

Я не получаю предупреждения о первом ( например, функция возвращает адрес локальной переменной ), но я знаю, что это недопустимо, поскольку b исчезает из стека, и у нас остается указатель на неопределенную память.

Итак, когда это сделать Мне нужно быть осторожным при возврате адреса временного значения?

12
задан Samuel Harmer 5 January 2012 в 15:24
поделиться