यह कोड सरणी घोषणा के दौरान एक सेगमेंटेशन गलती उत्पन्न करता है। मैं उलझन में हूं कि ऐसा क्यों होता है। मैंने जानबूझकर 2000000000 को मूल्य के रूप में चुना क्योंकि यह 2^31 से नीचे है और एक पूर्णांक चर में फिट हो सकता है।सी प्रोग्रामिंग, यह बड़ी सरणी घोषणा एक सेगमेंटेशन गलती क्यों उत्पन्न करती है?
int main()
{
int nums_size = 2000000000;
int nums[nums_size];
int i;
for(i = 0; i < nums_size; i++) {
nums[i] = i;
}
return 0;
}
यदि यह मामला नहीं था, तो 32 बिट प्लेटफ़ॉर्म पर 2000000000 * 4 = 8,000,000,000 बाइट्स। यह लगभग 2^33 है, जो उपलब्ध स्मृति से अधिक है। –
@ क्रिस: हाँ - मैंने पोस्ट किए जाने के बाद वास्तव में शून्य को गिनती नहीं की थी। यह बहुत सारे पूर्णांक है! –
स्थिर भंडारण अवधि के साथ बहुत बड़े सरणी आवंटित करना भी आम तौर पर संभव है। – caf