Valgind निम्न कोड में त्रुटि Invalid read of size 8
त्रुटि रिपोर्ट करता है।आकार 8 का अमान्य पढ़ने - Valgrind + C
मैं एक सरणी की घोषणा की, की तरह
struct symbol *st[PARSER_HASH_SIZE];
जब मेरे कार्यक्रम आरंभ नहीं हो जाता, इस सरणी में सभी तत्वों के रूप में 0.
memset(&st[0], 0, sizeof(st));
मेरे कार्यक्रम struct symbol
और आवेषण के उदाहरण बनाता initailzied कर रहे हैं हैश मान के आधार पर उपरोक्त सरणी में। इस सरणी में कुछ तत्व शून्य होंगे और अन्य वैध मान होंगे।
निम्नलिखित कोड आवंटित आइटम हटाने के लिए कोशिश करता है और valgrind लाइन में शिकायत करता है, sym = st[i]; sym != NULL; sym = sym->next
struct symbol *sym = NULL;
/* cleaning the symbol table entries */
for(i = 0; i < PARSER_HASH_SIZE; i++) {
for(sym = st[i]; sym != NULL; sym = sym->next) { /* <-- Valgrind complains here */
free(sym);
}
}
मैं इस त्रुटि के लिए कारण समझने की कोशिश कर रहा हूँ।
कोई भी मदद महान होगी!
यह structs की ओर इशारा शामिल करने के लिए है है। क्या आप मुझे बता सकते हैं कि इसे ठीक से कैसे शुरू किया जाए? –