27/08/2011, 08:07
|
| | Fecha de Ingreso: junio-2008 Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 5 meses Puntos: 61 | |
Respuesta: Funcion que devuelve un puntero a struct Asumiré que esta consulta es un concurso para adivinar cual warning el compilador te dio, haberlo incluido te hubiera ayudado a recibir una respuesta mejor y más rápida
Si yo fuera compilador criticaría que la función "pvecindad" comete la infracción de querer retornar la direccion de memoria de una variable local.
Las variables locales tienen vida limitada. No está mal manejar su dirección de memoria mientras la función que la definió se está ejecutando, el problema es usarla después de terminada, pues el compilador "destruye" las variables. ("destruye"= reutiliza la memoria para otras variables, invoca destructores, etc.).
Refraseando: No tiene sentido usar la dirección de memoria de variables locales a una función después de terminada la ejecución de ella. El castigo a hacerlo es que se reutilice la memoria en otra cosa y encuentres valores extraños donde antes habia algo util.
En el "mejor" de los casos, el cambio de los valores ocurrirá pronto y te darás cuenta del error, lo entenderás y lo corregirás. En el peor, y lo que pasa a veces en el mundo real, es que el cambio de valores no ocurre pronto, el código fuente permanece malo durante mucho tiempo y es al profesor, o a un cliente al que le salen los valores o comportamientos extraños. "Pero a mi me funciona" es una mala disculpa, cuando el compilador te advirtió.
Pero no soy compilador, asi que espero haber ganado el concurso.
Adiviné?
Última edición por CalgaryCorpus; 28/08/2011 a las 07:28 |