2008-10-01 12 views
6

मैं getpwuid (uid) को कॉल करने के बाद, मेरे पास एक सूचक का संदर्भ है। क्या मुझे यह मुक्त करना चाहिए जब मैं इसका उपयोग नहीं करता? मैन पेजों को पढ़ना, यह कहता है कि यह कुछ स्थैतिक क्षेत्र का संदर्भ देता है, जिसे उसी कार्य के बाद की कॉल द्वारा ओवरराइट किया जा सकता है, इसलिए मुझे यकीन है कि मुझे उस मेमोरी क्षेत्र को स्पर्श करना चाहिए या नहीं।क्या मुझे लिनक्स में getpwuid() द्वारा लौटाए गए पॉइंटर को मुक्त करना चाहिए?

धन्यवाद।

उत्तर

9

नहीं। आपको परिणाम मुक्त करने की आवश्यकता नहीं है। आप केवल मॉलोक (3), कॉलोक (3) या रीयलोक (3) के साथ ढेर पर आवंटित पॉइंटर्स पर मुफ्त (3) कॉल कर सकते हैं।

स्टेटिक डेटा किसी प्रोग्राम के डेटा या बीएसएस सेगमेंट का हिस्सा है और प्रक्रिया समाप्त होने तक जारी रहेगा (या निष्पादन (2) द्वारा ओवरराइट किया गया है)।

1

दरअसल यह पहले से मौजूद संरचना में एक सूचक देता है, इसलिए आपको मुक्त नहीं करना चाहिए।

5

उपयोग *_r कार्य (getpwuid_r()) धागे की सुरक्षित (रैत्रांत) कार्य है कि आप में लौट आए जानकारी रखने के लिए बफर अंतरिक्ष की आपूर्ति की अनुमति के लिए। सफलता या विफलता के लिए यकीन है कि जांच errno रहें। यदि आप पुनर्वित्त कार्यों का उपयोग नहीं करते हैं तो आप सुरक्षित रूप से यह मान सकते हैं कि फ़ंक्शन उन डेटा को लौटाता है जिन्हें मुक्त करने की आवश्यकता नहीं है, लेकिन एक ही फ़ंक्शन पर लगातार कॉल द्वारा ओवरराइट किया जाएगा।

+0

लगता है कि स्मृति के साथ भी समस्याएं हैं * _r फ़ंक्शंस – codingfreak

संबंधित मुद्दे