में स्मृति की कमी के कारण इस कोड को मुझे विभाजन दोष समय के बारे में 1/2 देता है:विभाजन गलती सी
int main(int argc, char **argv) {
float test[2619560];
int i;
for(i = 0; i < 2619560; i++)
test[i] = 1.0f;
}
मैं वास्तव में एक बहुत बड़ा सरणी आवंटित करने के लिए की जरूरत है, वहाँ की अनुमति के किसी तरह से है ऑपरेटिंग सिस्टम मुझे और मेमोरी पाने की इजाजत देता है?
मैं लिनक्स Ubuntu 9.10
यदि आप मॉलोक का उपयोग करते हैं, तो आवंटन सफल होने पर आप कोड में चेक करने में सक्षम हैं - आवंटन के माध्यम से चलने से बेहतर और उम्मीद है कि यह क्रैश नहीं होता है। (परिशिष्ट, बहुत अधिक टिप्पणी नहीं @caf) –
@ सैम डुफेल इस बात से अवगत रहें कि कुछ सिस्टम (जैसे डिफ़ॉल्ट रूप से लिनक्स) आपको स्मृति से बाहर होने पर भी मॉलोक से एक गैर-शून्य पॉइंटर वापस कर सकता है - जब भी आप दुर्घटनाग्रस्त हो जाते हैं आप उस स्मृति तक पहुंचने का प्रयास करते हैं। – nos
यह कहने के लिए शायद अधिक सटीक है कि कुछ सिस्टम आभासी पता स्थान आवंटित करने और बैकिंग स्टोर करने की धारणाओं को अलग करते हैं। – caf