"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जब आपको तेज़ पहुंच की आवश्यकता हो तो स्टैक पर एक बड़ी सरणी कैसे आवंटित करें?

जब आपको तेज़ पहुंच की आवश्यकता हो तो स्टैक पर एक बड़ी सरणी कैसे आवंटित करें?

2024-11-04 को प्रकाशित
ब्राउज़ करें:372

How to Allocate a Large Array on the Stack When You Need Fast Access?

बड़े सारणियों का स्टैक आवंटन

आपके सिमुलेशन कार्यक्रम में, आपको एकल-आयामी डबल सरणी घोषित करने का प्रयास करते समय एक चुनौती का सामना करना पड़ा है स्टैक पर 4,200,000 तत्वों के साथ। हालांकि कंपाइलर त्रुटियां जारी नहीं कर सकता है, प्रोग्राम निष्पादन पर क्रैश हो जाता है। इस आवश्यकता को देखते हुए, आप स्टैक पर सरणी आवंटित करने के लिए एक व्यवहार्य समाधान की तलाश कर रहे हैं।

स्टैक सीमाएँ

दुर्भाग्य से, इतनी बड़ी सरणी घोषित करना उचित नहीं है ढेर पर. स्टैक एक अपेक्षाकृत छोटा मेमोरी क्षेत्र है जिसका उपयोग स्थानीय चर और फ़ंक्शन कॉल डेटा को संग्रहीत करने के लिए किया जाता है। स्टैक पर 4,200,000-तत्व सरणी आवंटित करने से स्टैक स्थान की अत्यधिक खपत होगी और स्टैक ओवरफ्लो त्रुटियों की संभावना होगी।

वैकल्पिक समाधान

स्टैक का उपयोग करने के बजाय, आवंटन पर विचार करें ढेर में सरणी. हीप एक बड़ा मेमोरी क्षेत्र है जिसका उपयोग प्रोग्राम निष्पादन के दौरान मेमोरी को गतिशील रूप से आवंटित करने के लिए किया जाता है। ढेर में सरणी आवंटित करके, आप स्टैक सीमाओं से बच सकते हैं। ;

यह कोड ढेर पर आपके सरणी के लिए मेमोरी का एक सन्निहित ब्लॉक आवंटित करता है। फिर आप पॉइंटर n का उपयोग करके अलग-अलग तत्वों तक पहुंच सकते हैं। वेक्टर गतिशील सरणियाँ हैं जो तत्वों को जोड़ने या हटाने पर स्वचालित रूप से आकार बदल जाती हैं। वे मेमोरी प्रबंधन को सरल बनाते हैं और सीमा जांच प्रदान करते हैं। सरणियों के समान, वर्गाकार ब्रैकेट ऑपरेटर का उपयोग करके तत्वों तक पहुंचें। वह स्मृति जिसकी अब आपको आवश्यकता नहीं है. उदाहरण के लिए:

delete[] n; // ढेर-आवंटित मेमोरी को मुक्त करें
            
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3