के आकार पढ़ा है, मुझे यकीन है कि इसकी मुझे char *url pointer
कोस के साथ कुछ मिला हूँ ...वेलग्रिंड अमान्य मुझे के जीवन मैं बाहर काम नहीं कर सकते कारण है कि मैं इस कोड स्निपेट के लिए एक <code>invalid read size of 1</code> हो रही है के लिए 1
char *extractURL(char request[])
{
char *space = malloc(sizeof(char *));
space = strchr(request, ' ')+1;
char *hostend = malloc(sizeof(char *));
hostend = strchr(request, '\r');
int length = hostend - space;
if (length > 0)
{
printf("Mallocing %d bytes for url\n.", length+1);
char *url = (char *)malloc((length+1)*sizeof(char));
url = '\0';
strncat(url, space, length);
return url;
}
//else we have hit an error so return NULL
return NULL;
}
valgrind त्रुटि मैं हो रही है:
==4156== Invalid read of size 1
==4156== at 0x4007518: strncat (mc_replace_strmem.c:206)
==4156== by 0x8048D25: extractURL()
==4156== by 0x8048E59: processRequest()
==4156== by 0x8049881: main()
==4156== Address 0x0 is not stack'd, malloc'd or (recently) free'd
कर सकते हैं किसी को सही दिशा में 'बिंदु' मुझे?
आप यूआरएल के लिए स्मृति आवंटित करते हैं, फिर इसे एक शून्य सूचक पर सेट करें। (url = '\ 0';) क्या आपका मतलब है, शायद, url [0] = '\ 0' सेट करने के लिए; ? – Joe
क्या आप शायद strncpy का उपयोग करना चाहते हैं? – Cascabel
आपके पास अपने पहले दो 'मॉलोक' कॉल के साथ मेमोरी लीक भी है, जिस तरह से वे स्वयं पूरी तरह से फर्जी हैं, आप 'char' * सूचक * के आकार को' आकार 'क्यों आरक्षित करेंगे? आपका तीसरा 'मॉलोक 'संभावित भ्रम के संकेत भी दिखाता है: (1)' मॉलोक 'की वापसी कास्ट न करें, यह केवल परिभाषाओं के अनुसार बग (2)' आकार (चार)' '1' छुपाता है, जो संख्या आप पास करते हैं 'malloc'' की संख्या 'char' है जिसे आप आवंटित करना चाहते हैं। –