सरणी में तत्वों के सामान्य आवंटन की तुलना में सरणी बनाने के लिए गतिशील स्मृति आवंटन का उपयोग करने के क्या फायदे हैं?गतिशील मेमोरी आवंटन
उत्तर
1) गतिशील स्मृति आवंटन किसी वस्तु के जीवन चक्र को प्रबंधित करने की बात आती है जब बहुत सारी स्वतंत्रता की अनुमति देता है।
2) सरणी का आकार भी अधिक स्वतंत्रता के साथ नियंत्रित किया जा सकता है।
आपको पहले से सरणी के आकार को जानने की ज़रूरत नहीं है, या बड़े सरणी के लिए खाते को स्मृति आवंटित नहीं करना है। यह आपके प्रोग्राम को इसके स्मृति उपयोग के साथ अधिक कुशल होने की अनुमति देता है।
गतिशील रूप से बनाए गए Arrays आमतौर पर बनाए गए लोगों की तुलना में बड़े हो सकते हैं, और लंबे समय तक जीवनकाल हो सकते हैं। लेकिन दोनों std :: वेक्टर का उपयोग करने की तुलना में कई नुकसान हैं।
int x[100];
निश्चित आकार है और आप इसका विस्तार नहीं कर सकते हैं। इसका जीवनकाल उस संदर्भ से जुड़ा हुआ है जहां इसे बनाया गया था और विभिन्न कार्यों/विधियों के आसपास पारित नहीं किया जा सकता है।
int *x = new int[n]; ... delete[] x;
को फिर से आवंटित किया जा सकता है, इसलिए यह आकार बदल सकता है और एन संकलन समय में ज्ञात नहीं है (इसलिए आप उपयोगकर्ता से पूछ सकते हैं कि उसे कितनी संख्या की आवश्यकता है और उस आकार की सरणी बनाएं)। जैसा कि @ नील बटरवर्थ द्वारा इंगित किया गया है, यह ढेर पर सरणी बना रहा है और आकार में बड़ा हो सकता है, जबकि स्थैतिक संस्करण ढेर पर सरणी बना रहा है।
std::vector
इस जादू पुनर्विक्रय कोड को बहुत सारे लपेटता है और शायद यह आपके कोड में उपयोग करना चाहिए।
एक गतिशील आवंटित सरणी के मूल फायदे यह है कि आप रन-टाइम पर गतिशील आवंटित सरणी का आकार निर्धारित कर सकते हैं, और क्योंकि सरणी ढेर के बजाय ढेर पर है, यह स्थिर से बड़ा हो सकता है सरणी। हालांकि यह याद रखना महत्वपूर्ण है कि std :: वेक्टर आपके लिए यह काम करता है। जिस अवसर पर आपको अपनी खुद की सरणी कक्षा को रोल करना चाहिए, वह कुछ और बहुत दूर है। Std :: vector,
जब आप सरणी आवंटित कर रहे हैं तो संकलन समय पर सरणी का आकार दिया जाना चाहिए। उस मामले में ज्यादातर बार, या तो आप अधिक स्मृति या कम स्मृति आवंटित कर रहे हैं।
यह वह जगह है जहां गतिशील स्मृति आवंटन आपको मदद करता है ताकि आप वास्तव में स्मृति की उन सभी चीजों को आवंटित कर सकें जिन्हें वास्तव में आवश्यक है और जब आप स्मृति प्रबंधन के साथ होते हैं तो आप स्मृति को मुक्त कर सकते हैं।
संक्षेप में, यह प्रोग्रामर को आकार के ऐरे बनाने में मदद करता है जो उपयोगकर्ता कहता है।
- 1. गतिशील मेमोरी आवंटन विफलता रिकवरी
- 2. जावा मेमोरी आवंटन संरेखण
- 3. मेमोरी आवंटन
- 4. जावा गतिशील स्मृति आवंटन?
- 5. सी-मेमोरी आवंटन भ्रम
- 6. गतिशील स्मृति आवंटन मुद्दे
- 7. डेल्फी ऑब्जेक्ट मेमोरी आवंटन
- 8. पीडीएफ मेमोरी आवंटन (CGPDFDocumentRef)
- 9. सी ++ मेमोरी आवंटन मुद्दे
- 10. मेमोरी आवंटन सुझाव
- 11. विंडोज मेमोरी आवंटन प्रश्न
- 12. 64 बिट मेमोरी आवंटन
- 13. स्केलेबल मेमोरी आवंटन अनुभव
- 14. स्टेटिक विधि मेमोरी आवंटन
- 15. फोरट्रान: गतिशील सरणी बनाम स्वचालित सरणी मेमोरी आवंटन से बचें
- 16. गतिशील स्मृति आवंटन सवाल
- 17. scanf गतिशील आवंटन
- 18. गतिशील स्मृति आवंटन
- 19. गतिशील स्मृति आवंटन - सी ++
- 20. स्टेटिक आवंटन बनाम गतिशील आवंटन बनाम स्वचालित आवंटन
- 21. एसक्यूएल सर्वर सीएलआर मेमोरी आवंटन
- 22. मेमोरी आवंटन char * और char []
- 23. सी: लॉक-फ्री मेमोरी आवंटन लाइब्रेरी
- 24. ऑब्जेक्ट पूल बनाम गतिशील आवंटन
- 25. एनडीके में कितनी मेमोरी आवंटन है?
- 26. डिज़ाइन क्लास एकत्रीकरण - स्टैक आवंटन बनाम गतिशील स्मृति आवंटन
- 27. nodejs v8 मेमोरी जीसी आवंटन विफलता
- 28. मेमोरी आवंटन को समझना, परीक्षण प्रोग्राम
- 29. मेमोरी आवंटन करते समय एक नक्शा
- 30. सी # मेमोरी आवंटन और विलोपन पैटर्न
होमवर्क की तरह लगता है? –
कुछ प्लेटफार्मों पर, गतिशील मेमोरी क्षेत्र स्थानीय (या स्वचालित) भंडारण से काफी बड़ा है। सामान्य शब्दों में, * ढेर * * स्टैक * या * एप्लिकेशन स्थानीय * स्टोरेज से बड़े संग्रहण की अनुमति दे सकता है। –