2013-04-07 7 views
5
द्वारा पता लगाया

मेरे कोड:realloc: अगले आकार अमान्य, glibc

 
int args_size = 5; 
char** args; 

args = (char**) malloc(sizeof(char*) * args_size); 

// ... 

args = (char**) realloc(args, sizeof(char*) * (args_size += 5)); 

मैं द्वारा 5.

आकार में वृद्धि करना चाहते हैं लेकिन मैं इस त्रुटि मिलती है:

 
*** glibc detected *** ./a.out: realloc(): invalid next size: 0x0000000000a971c0 *** 

मुझे पता है कि एक अस्थायी चर पकड़ने वाला realloc अच्छा है, लेकिन केवल सादगी के लिए ...

+0

'मैक्रो-> args' क्या है? – cnicutar

+0

@cnicutar arrrr aorry मैंने इसे सही किया। – Sam

+0

'malloc' की वापसी नहीं डालें। '+ = ', argh के साथ साइड इफेक्ट्स प्रोग्रामिंग। –

उत्तर

5

सोल्व

प्रारंभ में, args का आकार 5 तत्व है। चूंकि प्रोग्राम args भर रहा था, यह गलती से 6 वें तत्व जोड़ रहा था और फिर realloc पर कॉल कर रहा था।

इससे प्रश्न में उल्लिखित त्रुटि हुई।

समस्या त्रुटि को नष्ट करने, WhozCraig, जेन्स Gustedt और दूसरों की टिप्पणियों का पालन करके द्वारा हल किया है ...

सभी को धन्यवाद!

संबंधित मुद्दे