मुझे लगता है कि मैं सबसे बुनियादी मामले के लिए नीचे मिल गया है:फ़ंक्शन कॉल के अंदर मॉलोक रिटर्न पर मुक्त हो रहा है?
int main(int argc, char ** argv) {
int * arr;
foo(arr);
printf("car[3]=%d\n",arr[3]);
free (arr);
return 1;
}
void foo(int * arr) {
arr = (int*) malloc(sizeof(int)*25);
arr[3] = 69;
}
उत्पादन यह है:
> ./a.out
car[3]=-1869558540
a.out(4100) malloc: *** error for object 0x8fe01037: Non-aligned pointer
being freed
*** set a breakpoint in malloc_error_break to debug
>
किसी को भी, जहां मेरी समझ विफल हो रहा है पर प्रकाश डाल सकती है, यह था बहुत सराहना कीजिए।
क्या मैं बस कह सकता हूं, कृपया मॉलोक के वापसी मूल्य को न डालें? यह आवश्यक नहीं है और त्रुटियों को छुपा सकता है। – freespace
@ फ्रीस्पेस, यह एक आदत है जिसे मैंने वर्षों से विकसित किया है। हर एक को और फिर मुझे स्थिर कोड विश्लेषण उपकरण के माध्यम से अपना कोड भेजना पड़ता है, और वे पॉइंटर्स कास्टिंग नहीं करने के बारे में शिकायत करते हैं। –
उत्तर के बिना आपको फांसी छोड़ने के बारे में खेद है: टिप्पणियों में जवाब खोजने का कोई अच्छा तरीका नहीं है जब तक कि मैं अपनी सभी टिप्पणियों का चुनाव नहीं करता :) :) मैंने http://stackoverflow.com/questions/108768/needless- पॉइंटर-कास्ट-इन-सी # 108781 – freespace