यह इस तथ्य के कारण है कि C++ बाउंड्स चेकिंग नहीं करता। जावा और पायथन जैसी भाषाओं में बाउंड्स चेकिंग होती है इसलिए यदि आप आउट ऑफ बाउंड्स एलिमेंट को एक्सेस करने का प्रयास करते हैं, तो वे एरर फेंकते हैं। C++ का डिज़ाइन सिद्धांत था कि यह समतुल्य C कोड से धीमा नहीं होना चाहिए, और C ऐरे बाउंड्स चेकिंग नहीं करता।
इसलिए यदि आप इस आउट ऑफ बाउंड्स मेमोरी को एक्सेस करने का प्रयास करते हैं, तो आपके प्रोग्राम का व्यवहार अनडिफाइंड है क्योंकि यह C++ स्टैंडर्ड में लिखा है। सामान्य तौर पर, जब भी आप अनडिफाइंड बिहेवियर का सामना करते हैं, तो कुछ भी हो सकता है। एप्लिकेशन क्रैश हो सकता है, यह फ्रीज हो सकता है, यह ठीक चल सकता है (या कम से कम ठीक चलता हुआ प्रतीत हो सकता है), यह अन्य एप्लिकेशन्स में हस्तक्षेप कर सकता है (आधुनिक ऑपरेटिंग सिस्टम्स पर वास्तव में नहीं), आदि।