हाँ, वहाँ संकेत के साथ एक समस्या है। बहुत संभावना है कि आप एक का उपयोग कर रहे हैं जिसे ठीक से आरंभीकृत नहीं किया गया है, लेकिन यह भी संभव है कि आप अपने मेमोरी मैनेजमेंट को डबल फ्रीज़ या कुछ इस तरह से गड़बड़ कर रहे हों।
स्थानीय चरों के रूप में अनधिकृत बिंदुओं से बचने के लिए, उन्हें यथासंभव देर से घोषित करने का प्रयास करें, अधिमानतः (और यह हमेशा संभव नहीं है) जब उन्हें सार्थक मूल्य के साथ आरंभ किया जा सकता है। खुद को समझाएं कि कोड का परीक्षण करने से पहले उनका उपयोग करने से पहले उनका एक मूल्य होगा। यदि आपको इससे कठिनाई है, तो उन्हें एक अशक्त पॉइंटर स्थिरांक (आमतौर पर जैसा कि लिखा गया है ) NULL
या 0
उन्हें जांचें।
सदस्य मूल्यों के रूप में अनइंस्टॉल किए गए पॉइंटर्स से बचने के लिए, सुनिश्चित करें कि वे कंस्ट्रक्टर में ठीक से आरंभीकृत हैं, और कॉपी कंस्ट्रक्टर और असाइनमेंट ऑपरेटरों में ठीक से संभाले हुए हैं। init
स्मृति प्रबंधन के लिए एक फ़ंक्शन पर भरोसा मत करो , हालांकि आप अन्य इनिशियलाइज़ेशन के लिए कर सकते हैं।
यदि आपकी कक्षा को कॉपी कंस्ट्रक्टर या असाइनमेंट ऑपरेटरों की आवश्यकता नहीं है, तो आप उन्हें निजी सदस्य कार्यों के रूप में घोषित कर सकते हैं और उन्हें कभी परिभाषित नहीं कर सकते। यदि वे स्पष्ट रूप से या अंतर्निहित रूप से उपयोग किए जाते हैं तो एक संकलक त्रुटि का कारण होगा।
लागू होने पर स्मार्ट पॉइंटर्स का उपयोग करें। यहां बड़ा फायदा यह है कि, यदि आप उनसे चिपके रहते हैं और लगातार उनका उपयोग करते हैं, तो आप पूरी तरह से लिखने से बच सकते हैं delete
और कुछ भी डबल डिलीट नहीं होगा।
सी-स्टाइल स्ट्रिंग्स और सरणियों के बजाय, जब भी संभव हो सी ++ स्ट्रिंग्स और कंटेनर कक्षाओं का उपयोग करें। .at(i)
इसके बजाय का उपयोग करने पर विचार करें [i]
, क्योंकि यह सीमा की जाँच को मजबूर करेगा। देखें कि क्या आपका संकलक या पुस्तकालय सीमा को [i]
कम से कम डिबग मोड पर जाँचने के लिए सेट किया जा सकता है। सेगमेंटेशन दोष बफर ओवररन के कारण हो सकते हैं जो पूरी तरह से अच्छे बिंदुओं पर कचरा लिखते हैं।
उन चीजों को करने से विभाजन दोष और अन्य स्मृति समस्याओं की संभावना कम हो जाएगी। वे निस्संदेह सब कुछ ठीक करने में विफल रहेंगे, और इसीलिए जब आपको कोई समस्या नहीं है, तो आपको अभी और तब वैग्रिंड का उपयोग करना चाहिए, और जब आप करते हैं तो वैग्रिड और जीडीबी।
g
संदर्भ में संकलित करने का क्या मतलब हैCMake
?