Alguien puede encontrar el error aki!!!

Kana
21 de Diciembre del 2005
#include <stdio.h>


char *rutina()
{
char miss[] = "Missatge de prova";
char *ptraux = miss;

printf("rutina: %sn", ptraux);

return (ptraux);
}

int main()
{
char *ptr;

ptr = rutina();

printf("main: %sn",ptr);
system("PAUSE");


return 0;
}

Hola,

me han pasado este codigo para ver si encuentro el fallo y decir que le pasa y corregirlo pero no soy capaz de encontrarlo. Se supone q el programa saca dos cadenas, una la funcion y otra el principal, deben ser iguales pero el principal falla.

Si alguien puede ayurdarme lo agradeceria.

Un saludo.

miguel
21 de Diciembre del 2005
Hola.
El error tiene como principio el "ámbito de las variables".
La función 'rutina' devuelve o retorna la dirección de memoria donde se encuentra la cadena "Missatge de prova".
Esa dirección que devuelve se le asigna a la variable puntero 'ptr', pero para entonces, la cadena "Missatge de prova" ya no estará en memoria, la cadena 'miss' se habrá destruido.

Posibles soluciones:
- La variable 'miss' se puede hacer global.
- Hacer uso de reserva de memoria.

Un saludo,
www.maacera.com