Programación General > C/C++

 Gestion Memoria Con Archivos Y Cadenas

<< < (2/2)

QliX=D!:
Podrias explicarte mejor, la verdaad que escribiste una ensalda y no se entiende bien parece...

elbaulico:
Perdonad si no me he explicado bien. Mi programa lee un fichero de texto que contiene un puñao de documentos. Lo que hago es coger palabra a palabra y las "trato", es decir, lo que hago es lematizar esa palabra (cojo solo el lexema de esa palabra), y cuando la lematizo la paso a un fichero de texto que solo contiene las palabras lematizadas.

Ahora lo que me pasa es que lo ejecuto y me hace las primeras palabras pero se para en una y me da el error que he dixo antes de "Thread Stopped".

Bien, ahora no se si es por falta de memoria o por que es. Yo tengo una variable global llamada cadena y hago esto:
char *cadena;
....
cadena = (char *)malloc(sizeof(char ));
....
fscanf(in, "%s", cadena);
....
free(cadena)

Estoy desesperaooooooooooo

chuidiang:
Con malloc(sizeof(char)) solo reservas espacio para un caracter. Cuando leas una palabra te saldrás del espacio reservado y estarás machacando memoria de otras cosas. El fallo puede ser cualquiera en cualquier momento.

El proceso que sigues es correcto, salvo por el tamaño. Debes hacer el malloc un poco más grande. Si no hay palabras más grandes de 100 caracteres, puedes hacer

malloc (100 * sizeof(char));

Se bueno.

mabrev:
Hola:

  Si existe una longitud máxima para las palabras, sería mejor que utilizases
char cadena[maximo];
en lugar de:
char *cadena;
en resumidas cuentas es lo mismo, pero mi experiencia me dice que de la segunda forma te trae menos problemas, así que si es posible es mejor utilizarla antes que la primera. Además así puedes pasar del malloc y del free, puesto que directamente al declararla se reserva espacio para contener cualquier palabra cuya longitud no supere la máxima.

Saludos.

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa