2011-10-13 30 views
11

Khi tôi đang cố gắng để thực hiện chương trình của tôi nhận được lỗi như thế này -Lỗi này đề xuất những gì?

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

Cố gắng nắm bắt lỗi qua valgrind, có này một -

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

Dòng không. 435

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

Nếu cần tôi có thể thêm các đoạn mã khác ... nhưng giúp tôi thoát khỏi điều này ??? Điều này là gì tôi đang nhận được không có đầu mối ..

+5

Loại âm thanh như chương trình của bạn sắp hết bộ nhớ. Làm thế nào lớn là 'datalen'? – Chriszuma

Trả lời

4

Bạn phải ghi đè "dữ liệu" và quên để giải phóng nội dung cũ ... bạn đã kiểm tra này?

Các vấn đề liên quan