2011-10-13 12 views
11

Cuando estoy tratando de ejecutar mi programa Su error al obtener como esto -¿Qué sugiere este error?

sendip: malloc.c:4631: _int_malloc: Assertion `(unsigned long)(size) 
>= (unsigned long)(nb)' failed 

ha intentado capturar el error a través valgrind, tiene éste -

HEAP SUMMARY: 
    ==3335==  in use at exit: 24 bytes in 2 blocks 
    ==3335== total heap usage: 111 allocs, 109 frees, 7,929 bytes allocated 
    ==3335== 
    ==3335== 4 bytes in 1 blocks are definitely lost in loss record 1 of 2 
    ==3335== at 0x40268A4: malloc (vg_replace_malloc.c:236) 
    ==3335== by 0x8049EEF: main (sendip.c:435) 
    ==3335== 
    ==3335== 20 bytes in 1 blocks are definitely lost in loss record 2 of 2 
    ==3335== at 0x40268A4: malloc (vg_replace_malloc.c:236) 
    ==3335== by 0x4031F57: ??? 
    ==3335== by 0x804A338: main (sendip.c:521) 
    ==3335== 

Línea no. 435

   datalen = stringargument(gnuoptarg, &datarg); 
     /*This is the line*/ data=(char *)malloc(datalen); 
          memcpy(data, datarg, datalen); 

si es necesario podría añadir otras piezas de código ... pero me ayude a salir de esto ??? ¿Qué es esto? No tengo ni idea ...

+5

Parece que su programa se está quedando sin memoria. ¿Qué tan grande es 'datalen'? – Chriszuma

Respuesta

4

Debe sobrescribir "datos" y olvidarse de liberar el contenido anterior ... ¿ha marcado esto?

Cuestiones relacionadas