उदाहरण के लिए, मैं स्मृति के दो टुकड़े malloc की जरूरत है, तो:मजबूत सी प्रोग्राम लिखने के लिए, आप बहुत से अलग मुक्त() संयोजनों से कैसे बचते हैं?
void *a = malloc (1);
if (!a)
return -1;
void *b = malloc (1);
if (!b)
{
free (a);
return -1;
}
सूचना यदि दूसरा malloc विफल रहता है, मैं मुक्त करने के लिए "एक" पहले की है। समस्या यह है, यह अगर वहाँ कई ऐसे malloc और त्रुटि जाँच की जब तक कि मैं कुख्यात "गोटो" खंड का उपयोग करें और ध्यान से मुक्त का का क्रम निर्धारित लेबल के साथ कर रहे हैं, बहुत गंदा हो सकता है:
void *a = malloc (1);
if (!a)
goto X;
void *b = malloc (1);
if (!b)
goto Y;
return 0; //normal exit
Y:
free (a);
X:
return -1;
क्या आपके पास इस स्थिति के लिए कोई बेहतर समाधान? अग्रिम में धन्यवाद।
+1 एक बार मैं भी एक ही समस्या का सामना करना पड़ा लेकिन "गन्दा कोड" के साथ काम पूरा कर लिया है .. !! –