Decir que tengo las siguientes dos funciones:Dirección de devolución de variable local en C
int * foo()
{
int b=8;
int * temp=&b;
return temp;
}
int * foo()
{
int b=8;
return &b;
}
que no recibe ninguna advertencia para el primero (por ejemplo, la función devuelve la dirección de una variable local) pero yo kn Esto es ilegal ya que b
desaparece de la pila y nos queda un puntero a la memoria indefinida.
Entonces, ¿cuándo debo tener cuidado al devolver la dirección de un valor temporal?
gracias! y el hecho de que cuando imprimo el valor de retorno en main me da el resultado correcto, ¿realmente significa que imprime basura? – mary
Significa que está invocando lo que normalmente nos referimos como * [comportamiento indefinido] (http://en.wikipedia.org/wiki/Undefined_behavior) *, es decir. comportamiento que no está especificado en el estándar. –