2017-10-27: पुनर्लेखन
यह वर्णन एक अशक्त सूचक त्रुटि की पारंपरिक परिभाषा के बाहर है, लेकिन यह एक अशक्त सूचक फिर भी उत्पादन कर सकते हैं, हालांकि अधिक बार अन्य त्रुटियों, या बिल्कुल भी नहीं का निर्माण किया। कार्यक्रम अक्सर 'अगर या कब' अपेक्षित प्रदर्शन करने में असफल होने के अलावा इसके अस्तित्व का कोई संकेत नहीं देता है। यह परंपरागत समझ को परिभाषित करने के बजाय, नल पॉइंटर असाइनमेंट त्रुटियों के संभावित स्रोतों के गैर परंपरागत उदाहरण और परिभाषा प्रदान करता है जो प्रोग्रामिंग तर्क में किसी त्रुटि की तुलना में सम्मेलन में अधिक त्रुटि है।
इस प्रकार की त्रुटि (अपरिभाषित, या शून्य) बहुत दुर्लभ है। लेकिन आधुनिक प्रोग्रामिंग, एक चिप प्रोग्रामिंग पर एक आर्डिनो, रास्पबेरी पीआई, एएमडी, या किसी अन्य कंप्यूटर जैसे बैंचटॉप उपकरणों का उपयोग करते हुए, असंख्य रूपों में मौजूद हैं, जिनमें से कई आज के रूप में सरल हैं, यह समस्या आज भी मौजूद है और यहां तक कि हो सकती है सिस्टम के सबसे परिष्कृत में। इसके अतिरिक्त, कंपनियां जो अपने स्वयं के चर या डेटा संरचनाओं का निर्माण करती हैं, वे शायद आज भी इसे देखने के लिए सबसे अधिक संभावना वाले लोग हैं। इरादा उन उदाहरणों को दिखाना है जो पहचान में सहायता कर सकते हैं।
इसके लिए 'शून्य' सूचक त्रुटि होने के लिए, असाइन किए गए मान को केवल '0' या 'शून्य' होना चाहिए। लेकिन इसे ऐतिहासिक रूप से 'शून्य सूचक त्रुटि' कहा जाता है न केवल एक साधारण शून्य संकेतक; लेकिन एक सरणी को साफ़ करने या शून्य करने पर उनकी घटना के कारण, दिनचर्या इतनी ओवरहूट कर रही है या सरणी की सीमाओं को अंडरशूट कर रही है। हालांकि, यह सरणी सीमा miscalculations द्वारा बनाई गई एक त्रुटि है जो शून्य सूचक असाइनमेंट और अन्य त्रुटियों का उत्पादन कर सकती है। इन्हें अक्सर आसानी से नहीं पहचाना जाता है और यह तुरंत या बिल्कुल त्रुटि उत्पन्न नहीं कर सकता है, क्योंकि जब पता लगाया गया है कि पॉइंटर मूल रूप से परिभाषित किए जाने पर इंगित किया गया है और अब एक अवांछनीय मान (एक बुरा पता) है। और जब, और जिसे ओवरराइट किया गया था, उसे ढूंढना लगभग असंभव हो सकता है। इसे त्रुटि के प्रकारों की परिभाषा के हिस्से के रूप में शामिल किया गया है जो शून्य पॉइंटर्स उत्पन्न करते हैं। जहां पॉइंटर को शून्य या शून्य के साथ अधिलेखित किया जाएगा और यह एक त्रुटि उत्पन्न करेगा, और इसे संशोधित करने की समस्या के साथ एक छोड़ दिया गया है। यह सुनिश्चित करने के लिए अतिरिक्त देखभाल की जानी चाहिए कि इंडेक्स की गणना बेस विकल्प 0 या 1 के उचित विचार के साथ ठीक से की जाती है और डेटा ब्लॉक को स्थानांतरित करते समय सही ढंग से गणना भी की जाती है। सौभाग्य से कई परिष्कृत विकास सॉफ्टवेयर अनुप्रयोग और उच्च स्तरीय भाषाएं संकलन से पहले या उसके दौरान इन मुद्दों में से बहुत से मुद्दों को पकड़ सकती हैं, जब वेरिएबल सरणी प्रकार स्पष्ट रूप से डाला जाता है, या जब प्रोग्राम रनटाइम वातावरण में लिखा जा सकता है और सरणी सीमाओं पर नज़र रखता है।
एक शून्य सूचक, जैसा कि पुराने दिनों में परिभाषित किया गया था, किसी भी चर जो पॉइंटर के पते और सूचक के पते की पता सामग्री के रूप में उपयोग किया जाता है, जिसका अर्थ सूचक पॉइंट को इंगित करता है, न कि स्थान जो इंगित करता है, शून्य है या शून्य, या संशोधित किया गया है, प्रोग्रामर के इरादे या ज्ञान के बिना अधिलेखित, जो एक शून्य हो सकता है, लेकिन कोई अन्य मूल्य हो सकता है। प्रायः केवल शून्य सूचक एक त्रुटि संदेश बनाता है, भले ही कोड एक त्रुटि उत्पन्न कर सके, क्योंकि यह अक्सर गलत स्थानों पर लिखे गए नल वाले डेटा के ब्लॉक होते हैं। मूल परिभाषित पते को इंगित करने के बजाय जहां डेटा रहना चाहिए, अब इसमें एक अमान्य या अवांछित पता चलाना डेटा अमान्य या अवांछित स्थान ओवरराइटिंग और कोड या डेटा को दूषित कर रहा है। चूंकि डेटा की विफलता, या कोड तुरंत निष्पादित नहीं हो सकता है, या इसे उपयोग नहीं किया जा सकता है क्योंकि यह किसी मौजूदा अप्रयुक्त स्मृति स्थान पर स्थानांतरित हो जाता है, जब कोड या डेटा किसी भी समय चलने में समस्या का कारण बनता है, तो कोई जानकारी नहीं हो सकती त्रुटि के 'वास्तविक' स्थान पर, चाहे वह शून्य पॉइंटर्स या अन्य भ्रष्टाचार को बनाता या निर्दिष्ट करता है, यह कोड को संशोधित करता है, और चीजें अजीब, वास्तव में अजीब हो सकती हैं।
संक्षेप में, एक शून्य सूचक किसी भी शून्य पते को स्मृति स्थान पर इंगित करने के लिए उपयोग किया जाता है, चाहे वह इसे बनाता है। एक शून्य सूचक असाइनमेंट त्रुटि, या कई अन्य त्रुटियों को इस समस्या और उदाहरण के लिए असाइन किया जा सकता है।
सरल वास्तुकला या प्रोग्रामिंग वातावरण में, यह किसी भी कोड है जो अनजाने में संकेत के रूप में nulls बनाने समाप्त होता है, या एक बग है कि किसी भी तरह निष्पादन रुकती है,, वापसी ढेर में एक बाइट अधिलेखन कोड अधिलेखन की तरह बनाता है का उल्लेख कर सकते डाल गलत स्थान पर कोड या डेटा, न कि पते के रूप में। इसलिए, उपरोक्त उदाहरणों के दौरान, एक शून्य सूचक के उदाहरण को परिभाषित करने के लिए ठीक काम करें। इसलिए हम अवधारणा का विस्तार करते हैं, एक नल पॉइंटर कोई पॉइंटर होता है जो एक परिवर्तनीय सूचक के रूप में उपयोग किया जाता है, और उस चर के पते स्थान को कई कारणों में से किसी एक के लिए अब 'शून्य' या कोई अनपेक्षित मान होता है जो अवांछित स्मृति स्थान को इंगित करता है कोई फर्क नहीं पड़ता कि यह कैसे मिला।
तो आखिर में, कोई एक शून्य सूचक त्रुटि प्राप्त कर सकता है, और पॉइंटर की जांच करने पर यह एक शून्य है; लेकिन, उस कोड को नहीं मिला जो शून्य में पॉइंटर में रखता है या इसे सौंपा गया है। यह शून्य सूचक असाइनमेंट त्रुटि की एक विस्तृत परिभाषा है, और एक शून्य सूचक त्रुटि का सबसे खराब स्थिति परिदृश्य है। जब यह एक बड़े कार्यक्रम में होता है, तो यह प्रोग्राम की मौत हो सकता है क्योंकि यदि त्रुटि पहले मौजूद थी, और गलत स्मृति स्थान पर लिख रही थी, और उस स्थान को अभी तक आवंटित नहीं किया गया था, तब तक प्रोग्राम अनदेखा हो जाता है जब तक कि प्रोग्राम का विस्तार नहीं हो जाता , और अब गलत स्मृति स्थान नए कोड के अंदर मौजूद हो सकता है, जो यादृच्छिक त्रुटियों को उत्पन्न करता है। उदाहरण के लिए: खराब पता मान डेटा को वैरिएबल स्पेस के बाहर लिखा जाने का कारण बनता है, लेकिन कुछ समय के लिए अनजान हो जाता है क्योंकि यह लिखा जा रहा है, और इसे पढ़ा जा रहा है, और सबकुछ 'ठीक दिखाई देता है' ठीक है! लेकिन, कार्यक्रम फैलता है, बड़ा हो जाता है, एक ही पता स्थान में नया कोड मौजूद होता है, जहां स्मृति पुरानी बग मौजूद होती है जो गलत पता स्थान पर डेटा लिखती है और कोई भी ध्यान नहीं देता है, चाहे एक बाइट, या डेटा का एक संपूर्ण ब्लॉक! लेकिन, अब, वहां नया कोड है। और यह पुराने अनदेखा बग द्वारा दूषित हो गया है, और एक वर्ष पहले मौजूद त्रुटि को खोजने के लिए अब लगभग पूरी तरह से, असंभव नहीं है, लगभग असंभव है। प्रशासक तर्क आमतौर पर निर्देशित करता है, वहां क्यों दिखता है, यह भाग गया और पिछले साल ठीक काम करता था। लेकिन, अब, कुछ भी काम नहीं करता है, प्रमुख टुकड़े टूट जाते हैं, देखो और देखो और आपको कुछ भी नहीं मिलता है। ऐसा लगता है कि त्रुटि मौजूद नहीं है, और फिर भी यह करता है। इसका क्या कारण है, जो पहले लिखित कोड संदिग्ध हैं? नल पॉइंटर्स और कई अन्य त्रुटियां भी इसके कारण होती हैं।
शायद यह उत्तर गलत है और कहीं और सूचीबद्ध होने के लिए बेहतर सेवा प्रदान करेगा। संचालक? शायद, चिंता है क्योंकि इस 'उत्तर' को उचित नहीं माना जाता है क्योंकि प्रश्न में "असाइनमेंट" शब्द के उपयोग पर कुछ चिंता है, जिसका अर्थ जानबूझकर असाइन किया गया है। हालांकि, असाइनमेंट की अवधारणा को ज्ञान या सहमति की आवश्यकता नहीं है। एक एल्गोरिदम या कोड मान असाइन कर सकते हैं। नल पॉइंटर्स को कई तरीकों से बनाया जा सकता है, उदाहरण यहां पारंपरिक त्रुटियों के बाहर सबसे आम है।
ऐसा लगता है कि इस जानकारी में 'ए' जगह है, और इसे यहां एक उत्तर के रूप में शामिल किया गया है। एक साधारण नीचे वोट के बजाय सकारात्मक उपयोगी प्रतिक्रिया या सुझावों की सराहना की जाती है, अगर कोई टिप्पणी करने की परवाह करता है, तो शायद मेटा चर्चा क्रम में है?
चीयर्स।
http://www.faqs.org/qa/qa-3786.html – zaf