2010-12-10 28 views
6

में पहुंच योग्य है, जबकि अभी भी वाल्ग्रिंड में पहुंचने योग्य खोज के दौरान, कुछ लोग कहते हैं कि यह कोई समस्या नहीं है। हम इसे ठीक करने के लिए nedd नहीं है। कुछ लोग कहते हैं कि इसे ठीक करने की जरूरत है। मैं बेहतर होगा अगर कोई मुझे स्पष्ट रूप से exaplain कर सकता है कि यह अभी भी पहुंचने योग्य के पीछे तर्क क्या है। क्या यह ठीक करना अनिवार्य है?अभी भी valgrind

[संपादित करें]

मैं अपने सी program.Do के लिए valgrind उत्पादन निम्नलिखित है मैं इसे ठीक करने की जरूरत है?

 LEAK SUMMARY: 
     ==27333== definitely lost: 0 bytes in 0 blocks. 
     ==27333==  possibly lost: 0 bytes in 0 blocks. 
     ==27333== still reachable: 96 bytes in 12 blocks. 
     ==27333==   suppressed: 0 bytes in 0 blocks. 
+0

आपने यह भी नहीं कहा है कि यह एक सी या सी ++ प्रोग्राम है या नहीं। – sharptooth

+0

उपरोक्त परिणाम मेरे सी प्रोग्राम के लिए है। – thetna

+0

ठीक है, मैंने जवाब अपडेट किया है। – sharptooth

उत्तर

9

यह निर्भर करता है। "अभी भी पहुंच योग्य" का मतलब है कि आपने बाहर निकलने से पहले स्मृति के ब्लॉक को हटा दिया नहीं है, लेकिन इसके लिए एक सूचक था।

एक सी ++ इस कार्यक्रम में इसका मतलब है कि किसी वस्तु delete घ किया गया सकता है नहीं और इसलिए अपनी नाशक चलाने की है नहीं हो सकता है और इस तरह कहते हैं कि कुछ डेटा उदाहरण के लिए डिस्क पर सहेजा नहीं हो सकता है किया गया और कुछ अन्य कार्रवाई नहीं हो सकता लिया गया और इस प्रकार आपका प्रोग्राम अप्रत्याशित व्यवहार उत्पन्न कर सकता है।

हालांकि, सी कार्यक्रमों में कोई विनाशकर्ता वहाँ हो तो अपने कार्यक्रम सिर्फ इतना है कि पर निर्भर नहीं कर सकते हैं। मेमोरी को डिलीकेट करने में कुछ समय लगता है, इसलिए बाहर निकलने पर स्मृति मुक्त नहीं करके आप कुछ समय बचा सकते हैं - आपका प्रोग्राम तेजी से बाहर निकल जाएगा (यह बहुत सारे डेटा वाले कार्यक्रमों के लिए महत्वपूर्ण हो सकता है)।

तो IMO अगर आपके सी कार्यक्रम है "अभी भी पहुंचा जा सकता" ब्लॉक यह एक समस्या नहीं है, लेकिन यह है कि कार्यक्रम में कुछ कोड मुक्त नहीं स्मृति करता है इंगित करता है और इसलिए आप जब कि कोड पुन: उपयोग कीड़े उम्मीद कर सकते हैं।

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