अपनी सीमा के बाहर (C) में किसी सरणी तक पहुँचना कितना खतरनाक है? यह कभी-कभी ऐसा हो सकता है कि मैं सरणी के बाहर से पढ़ता हूं (मुझे अब समझ में आया कि मैं अपने कार्यक्रम के कुछ अन्य हिस्सों या उससे भी परे उपयोग की जाने वाली मेमोरी का उपयोग करता हूं) या मैं सरणी के बाहर एक सूचकांक में मान सेट करने का प्रयास कर रहा हूं। कार्यक्रम कभी-कभी क्रैश हो जाता है, लेकिन कभी-कभी बस चलता है, केवल अप्रत्याशित परिणाम देता है।
अब मैं जानना चाहता हूं कि यह वास्तव में कितना खतरनाक है? यदि यह मेरे कार्यक्रम को नुकसान पहुंचाता है, तो यह इतना बुरा नहीं है। अगर दूसरी ओर यह मेरे कार्यक्रम के बाहर कुछ तोड़ता है, क्योंकि मैं किसी तरह कुछ पूरी तरह से असंबंधित स्मृति तक पहुंचने में कामयाब रहा, तो यह बहुत बुरा है, मैं कल्पना करता हूं। मैंने बहुत कुछ पढ़ा 'कुछ भी हो सकता है ’, might विभाजन कम से कम बुरी समस्या हो सकती है’ , hard आपकी हार्ड डिस्क गुलाबी हो सकती है और यूनिकॉर्न आपकी खिड़की के नीचे गाना हो सकता है ’, जो सब अच्छा है, लेकिन वास्तव में खतरा क्या है?
मेरे सवाल:
- क्या सरणी के बाहर के मूल्यों को पढ़ने से मेरे प्रोग्राम के अलावा कुछ भी नुकसान हो सकता है? मैं कल्पना करूंगा कि चीजों को देखने से कुछ भी नहीं बदलता है, या क्या यह उस फ़ाइल के 'अंतिम बार खोले गए' विशेषता को बदलने के लिए होगा, जो मैं करने के लिए हुआ था?
- क्या मेरे प्रोग्राम से अलग किसी भी चीज़ को नुकसान पहुंचाने के लिए वैल्यू सेट कर सकते हैं? इस स्टैक ओवरफ्लो प्रश्न से मैं इकट्ठा करता हूं कि किसी भी मेमोरी स्थान तक पहुंचना संभव है, कि कोई सुरक्षा गारंटी नहीं है।
- अब मैं XCode के भीतर से अपने छोटे प्रोग्राम चलाता हूं। क्या यह मेरे कार्यक्रम के आसपास कुछ अतिरिक्त सुरक्षा प्रदान करता है जहां यह अपनी स्मृति से बाहर नहीं पहुंच सकता है? क्या यह एक्सकोड को नुकसान पहुंचा सकता है?
- अपने अंतर्निहित छोटी गाड़ी कोड को सुरक्षित रूप से चलाने के बारे में कोई सिफारिशें?
मैं OSX 10.7, Xcode 4.6 का उपयोग करता हूं।