[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