[C con Clase] Segmentation fault al ejecutar la sentencia free() en una función
Emilio Manzaneque
emanzaneque en orange.es
Lun Nov 3 08:24:43 CET 2014
Hola,
He encontrado este ejemplo http://c.learncodethehardway.org/book/ex18.html y basándome en el he hecho unas modificaciones que al parecer funcionan, el código queda así.
En “main”
char *mensaje;
mensaje = inserta(cadena,mensaje_id,19);
enviar(mensaje);
free(mensaje);
Función:
char *inserta(char* mensaje, char* cadena, int posicion)
{
char *salida = NULL;
int lcadena, lmensaje;
lmensaje = longitud(mensaje);
lcadena = longitud(cadena);
salida = (char*) malloc(lmensaje+lcadena+1);
//copia la parte de la cadena antes de la posición de inserción
memcpy(salida,mensaje,posicion);
salida+=posicion;
mensaje+=posicion;
//inserta la cadena en este punto
memcpy(salida,cadena,lcadena);
salida+=lcadena;
//acaba de completa la cadena de salida con el resto del mensaje
memcpy(salida,mensaje,(lmensaje-posicion));
salida+=(lmensaje-posicion);
*salida = 0x00;
salida-=(lmensaje+lcadena);
return salida;
}
Digo que parece porque todavía no tengo del todo claro que se libere la memoria reservada dentro de la función.
En cualquier caso volver a agradecer a Salvador y Marcelinux su ayuda.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20141103/a3bdd30c/attachment.html>
Más información sobre la lista de distribución Cconclase