मैं सी + + प्रोग्राम में मूल्यों को इस तरह से सीमा से बाहर कर रहा हूं:
#include <iostream>
using namespace std;
int main()
{
int array[2];
array[0] = 1;
array[1] = 2;
array[3] = 3;
array[4] = 4;
cout << array[3] << endl;
cout << array[4] << endl;
return 0;
}
कार्यक्रम प्रिंट 3और 4। यह संभव नहीं होना चाहिए। मैं g ++ 4.3.3 का उपयोग कर रहा हूं
यहाँ संकलन और रन कमांड है
$ g++ -W -Wall errorRange.cpp -o errorRange
$ ./errorRange
3
4
केवल असाइन करते समय array[3000]=3000यह मुझे एक विभाजन दोष देता है।
अगर gcc सरणी सीमाओं की जाँच नहीं करता है, तो मुझे कैसे यकीन हो सकता है कि मेरा कार्यक्रम सही है, क्योंकि यह बाद में कुछ गंभीर मुद्दों को जन्म दे सकता है?
मैंने उपरोक्त कोड को बदल दिया है
vector<int> vint(2);
vint[0] = 0;
vint[1] = 1;
vint[2] = 2;
vint[5] = 5;
cout << vint[2] << endl;
cout << vint[5] << endl;
और यह भी कोई त्रुटि नहीं पैदा करता है।
vector नहीं देता है ! यह सिर्फ यूबी है!