


फ़ंक्शंस में रिटेन्ड मेमोरी को समझना
किसी फ़ंक्शन के संदर्भ में, `retains` इस तथ्य को संदर्भित करता है कि फ़ंक्शन उस मेमोरी को रिलीज़ या मुक्त नहीं करता है जिसका वह उपयोग करता है। इसके बजाय, यह मेमोरी को पकड़कर रखता है और जब इसकी आवश्यकता नहीं रह जाती है तो इसे हटाने के लिए जिम्मेदार होता है। दूसरे शब्दों में, एक फ़ंक्शन जो मेमोरी को बनाए रखता है वह मेमोरी का उपयोग समाप्त होने के बाद उसे ढेर या स्टैक पर वापस नहीं करता है। इसका मतलब यह है कि फ़ंक्शन मेमोरी के जीवनकाल को प्रबंधित करने के लिए ज़िम्मेदार है, जो कुछ स्थितियों में उपयोगी हो सकता है लेकिन मेमोरी लीक से बचने के लिए सावधानीपूर्वक प्रबंधन की भी आवश्यकता होती है। उदाहरण के लिए, एक फ़ंक्शन पर विचार करें जो एक बड़ी डेटा संरचना के लिए मेमोरी आवंटित करता है और फिर रिटर्न देता है कॉलर को उस डेटा संरचना का सूचक। यदि फ़ंक्शन आवश्यकता न होने पर मेमोरी को रिलीज़ नहीं करता है, तो मेमोरी को फ़ंक्शन द्वारा बनाए रखा जाएगा और कॉल करने वाला बाद में इसे हटाने के लिए जिम्मेदार होगा। इससे मेमोरी लीक हो सकती है यदि कॉल करने वाला मेमोरी को हटाना भूल जाता है। इसके विपरीत, एक फ़ंक्शन जो स्टैक या हीप पर आवंटित मेमोरी में एक पॉइंटर लौटाता है और फिर मेमोरी को तब रिलीज़ करता है जब इसकी आवश्यकता नहीं रह जाती है (यानी, ` Malloc` और `free`) मेमोरी बरकरार नहीं रखता है। जैसे ही फ़ंक्शन का उपयोग समाप्त हो जाता है, मेमोरी को वापस ढेर या स्टैक पर छोड़ दिया जाता है, इसलिए कॉल करने वाले को मेमोरी के जीवनकाल को प्रबंधित करने के बारे में चिंता करने की आवश्यकता नहीं होती है।



