что говорит эта ошибка? - PullRequest
       24

что говорит эта ошибка?

12 голосов
/ 13 октября 2011

Когда я пытаюсь выполнить свою программу, она получает ошибку, подобную этой -

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

Пробная ошибка захвата через valgrind, получаю эту -

   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== 

Строка №.435

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

При необходимости я мог бы добавить другие фрагменты кода ... но помочь мне выбраться из этого ???Что это я не понимаю ...

1 Ответ

4 голосов
/ 13 октября 2011

Вы должны перезаписать "данные" и забыть освободить старый контент ... Вы проверяли это?

...