2010-02-22 181 views
5

सरणी में तत्वों के सामान्य आवंटन की तुलना में सरणी बनाने के लिए गतिशील स्मृति आवंटन का उपयोग करने के क्या फायदे हैं?गतिशील मेमोरी आवंटन

+3

होमवर्क की तरह लगता है? –

+0

कुछ प्लेटफार्मों पर, गतिशील मेमोरी क्षेत्र स्थानीय (या स्वचालित) भंडारण से काफी बड़ा है। सामान्य शब्दों में, * ढेर * * स्टैक * या * एप्लिकेशन स्थानीय * स्टोरेज से बड़े संग्रहण की अनुमति दे सकता है। –

उत्तर

3

1) गतिशील स्मृति आवंटन किसी वस्तु के जीवन चक्र को प्रबंधित करने की बात आती है जब बहुत सारी स्वतंत्रता की अनुमति देता है।

2) सरणी का आकार भी अधिक स्वतंत्रता के साथ नियंत्रित किया जा सकता है।

9

आपको पहले से सरणी के आकार को जानने की ज़रूरत नहीं है, या बड़े सरणी के लिए खाते को स्मृति आवंटित नहीं करना है। यह आपके प्रोग्राम को इसके स्मृति उपयोग के साथ अधिक कुशल होने की अनुमति देता है।

4

गतिशील रूप से बनाए गए Arrays आमतौर पर बनाए गए लोगों की तुलना में बड़े हो सकते हैं, और लंबे समय तक जीवनकाल हो सकते हैं। लेकिन दोनों std :: वेक्टर का उपयोग करने की तुलना में कई नुकसान हैं।

2

int x[100]; निश्चित आकार है और आप इसका विस्तार नहीं कर सकते हैं। इसका जीवनकाल उस संदर्भ से जुड़ा हुआ है जहां इसे बनाया गया था और विभिन्न कार्यों/विधियों के आसपास पारित नहीं किया जा सकता है।

int *x = new int[n]; ... delete[] x; को फिर से आवंटित किया जा सकता है, इसलिए यह आकार बदल सकता है और एन संकलन समय में ज्ञात नहीं है (इसलिए आप उपयोगकर्ता से पूछ सकते हैं कि उसे कितनी संख्या की आवश्यकता है और उस आकार की सरणी बनाएं)। जैसा कि @ नील बटरवर्थ द्वारा इंगित किया गया है, यह ढेर पर सरणी बना रहा है और आकार में बड़ा हो सकता है, जबकि स्थैतिक संस्करण ढेर पर सरणी बना रहा है।

std::vector इस जादू पुनर्विक्रय कोड को बहुत सारे लपेटता है और शायद यह आपके कोड में उपयोग करना चाहिए।

0

एक गतिशील आवंटित सरणी के मूल फायदे यह है कि आप रन-टाइम पर गतिशील आवंटित सरणी का आकार निर्धारित कर सकते हैं, और क्योंकि सरणी ढेर के बजाय ढेर पर है, यह स्थिर से बड़ा हो सकता है सरणी। हालांकि यह याद रखना महत्वपूर्ण है कि std :: वेक्टर आपके लिए यह काम करता है। जिस अवसर पर आपको अपनी खुद की सरणी कक्षा को रोल करना चाहिए, वह कुछ और बहुत दूर है। Std :: vector,

0

जब आप सरणी आवंटित कर रहे हैं तो संकलन समय पर सरणी का आकार दिया जाना चाहिए। उस मामले में ज्यादातर बार, या तो आप अधिक स्मृति या कम स्मृति आवंटित कर रहे हैं।

यह वह जगह है जहां गतिशील स्मृति आवंटन आपको मदद करता है ताकि आप वास्तव में स्मृति की उन सभी चीजों को आवंटित कर सकें जिन्हें वास्तव में आवश्यक है और जब आप स्मृति प्रबंधन के साथ होते हैं तो आप स्मृति को मुक्त कर सकते हैं।

0

संक्षेप में, यह प्रोग्रामर को आकार के ऐरे बनाने में मदद करता है जो उपयोगकर्ता कहता है।

संबंधित मुद्दे