[C con Clase] Segmentation fault al ejecutar la sentencia free() en una función

Emilio Manzaneque emanzaneque en orange.es
Mie Oct 29 10:58:26 CET 2014


Hola a todos,

 

Cuando ejecuto una función con malloc/free por segunda vez obtengo un error
de “segmentation fault” justo al ejecutar por segunda vez la sentencia
“free”.

 

El código es el siguiente:

 

char *inserta(char* mensaje, char* cadena, int posicion)

{

      char *salida = NULL;

      int lcadena;

      char paso;

      int offset = 0;

      

      salida = (char*) malloc(512);

      

          

      //copia la parte de la cadena antes de la posición de inserción

      for (int i = 0; i < posicion; i++)

      {

          memcpy(salida,mensaje,1);

          salida++;

          mensaje++;

      }

      //inserta la cadena en este punto

      lcadena = longitud(cadena);

      for (int i = 0; i < lcadena; i++)

      {

          memcpy(salida,cadena,1);

          salida++;

          cadena++;

      }

      //acaba de completa la cadena de salida con el resto del mensaje

      while (*mensaje)

      {

            memcpy(salida,mensaje,1);

            salida++;

            mensaje++;    

            offset++;

      }

      *salida = 0x00;

      salida -= (posicion + lcadena + offset);

      memcpy(cadena,salida,(posicion + lcadena + offset));

 

      free(salida)

      return cadena;

}

 

¿Alguna idea?

 

Muchas gracias

 

 

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20141029/5a164ae8/attachment.html>


Más información sobre la lista de distribución Cconclase