2011-10-13 16 views
11

जब मैं इस तरह मेरा कार्यक्रम इसकी हो रही त्रुटि निष्पादित करने के लिए कोशिश कर रहा हूँ -यह त्रुटि क्या सुझाती है?

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

लाइन नहीं -

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

valgrind के माध्यम से त्रुटि पर कब्जा करने की कोशिश की, यह एक मिला है। 435

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

यदि आवश्यक हो तो मैं कोड के अन्य टुकड़े जोड़ सकता हूं ... लेकिन मुझे इससे बाहर निकलने में मदद करें ??? यह क्या है मुझे कोई सुराग नहीं मिल रहा है ..

+5

इस तरह की आवाज़ें आपके प्रोग्राम की तरह ही स्मृति से बाहर चल रही हैं। 'Datalen' कितना बड़ा है? – Chriszuma

उत्तर

4

आपको "डेटा" ओवरराइट करना होगा और पुरानी सामग्री को मुक्त करना भूल जाना होगा ... क्या आपने इसे चेक किया है?