मुख्य अंतर - स्टेटिक बनाम डायनामिक मेमोरी आवंटन
प्रोग्रामिंग में कम्प्यूटेशनल डेटा को स्टोर करना जरूरी होता है। ये डेटा मेमोरी में स्टोर होते हैं। कंप्यूटर प्रोग्रामिंग में डेटा स्टोर करने के लिए मेमोरी लोकेशन को वेरिएबल के रूप में जाना जाता है। चरों का एक विशिष्ट डेटा प्रकार होता है। इसलिए, प्रोग्राम को चलाने के लिए मेमोरी आवंटित की जाती है। मेमोरी को दो तरह से आवंटित किया जा सकता है। वे स्टेटिक मेमोरी एलोकेशन और डायनेमिक मेमोरी एलोकेशन हैं। स्टैटिक मेमोरी एलोकेशन में, एक बार मेमोरी आवंटित हो जाने के बाद इसे बदला नहीं जा सकता है। स्मृति पुन: प्रयोज्य नहीं है। लेकिन गतिशील स्मृति आवंटन में, स्मृति आवंटित होने के बाद इसे बदला जा सकता है।स्टैटिक और डायनेमिक मेमोरी एलोकेशन के बीच महत्वपूर्ण अंतर यह है कि स्टैटिक मेमोरी एलोकेशन में एक बार मेमोरी आवंटित होने के बाद, मेमोरी का आकार तय हो जाता है जबकि डायनेमिक मेमोरी एलोकेशन में, मेमोरी आवंटित होने के बाद, मेमोरी का आकार बदला जा सकता है।
स्थिर मेमोरी आवंटन क्या है?
स्थिर स्मृति आवंटन में, आवंटित स्मृति निश्चित है। एक बार मेमोरी आवंटित हो जाने के बाद, इसे बदला नहीं जा सकता है। मेमोरी को बढ़ाया या घटाया नहीं जा सकता। उदाहरण के लिए, C भाषा में यदि प्रोग्रामर int x लिखता है, जिसका अर्थ है कि चर एक पूर्णांक मान संग्रहीत कर सकता है। बाइट्स की संख्या कंप्यूटर पर निर्भर करती है। सरणियाँ भी हो सकती हैं। उदा. इंट एक्स [5]; यह x एक सरणी है जो एक ही प्रकार के डेटा के अनुक्रम को संग्रहीत कर सकती है। यह पांच पूर्णांक तत्वों को संग्रहीत कर सकता है। यह पांच से अधिक तत्वों को स्टोर नहीं कर सकता है। जावा में, एक सरणी के रूप में बनाया जा सकता है, int arr=new int[5]; सरणी 'arr' 5 पूर्णांक मानों को संग्रहीत कर सकती है और इससे अधिक संग्रहीत नहीं कर सकती है।
चित्र 01: स्मृति आवंटन के तरीके
स्थिर स्मृति आवंटन में, एक बार चर आवंटित किए जाने के बाद, वे स्थायी रहते हैं। प्रारंभिक आवंटन के बाद, प्रोग्रामर मेमोरी का आकार नहीं बदल सकता है। यदि प्रोग्रामर ने एक सरणी आवंटित की है जो 10 तत्वों को संग्रहीत कर सकती है, तो उस निर्दिष्ट राशि से अधिक मूल्यों को संग्रहीत करना संभव नहीं है। यदि प्रोग्रामर ने शुरू में एक सरणी आवंटित की है जिसमें 10 तत्व हो सकते हैं, लेकिन केवल 5 तत्वों की आवश्यकता है, तो एक स्मृति अपव्यय है। उस स्मृति की अब आवश्यकता नहीं है, लेकिन स्मृति का पुन: उपयोग करना भी संभव नहीं है।स्थिर स्मृति आवंटन निश्चित है लेकिन कार्यान्वयन सरल और आसान है, और यह तेज़ भी है।
डायनामिक मेमोरी आवंटन क्या है?
कभी-कभी मेमोरी का आकार बदलना आवश्यक होता है। तो स्मृति को गतिशील रूप से आवंटित किया जा सकता है। डेटा तत्वों के सम्मिलन और विलोपन के आधार पर, मेमोरी बढ़ या घट सकती है। इसे गतिशील स्मृति आवंटन के रूप में जाना जाता है।
सी भाषा में, stdlib.h हेडर फाइल, डायनेमिक मेमोरी आवंटन के लिए चार कार्य हैं। वे कॉलोक, मॉलोक, रीयलोक और फ्री हैं। फ़ंक्शन malloc() बाइट्स का एक आवश्यक आकार आवंटित करता है और आवंटित स्मृति के पहले बाइट को इंगित करते हुए एक शून्य सूचक देता है। फ़ंक्शन कॉलोक () बाइट्स के एक आवश्यक आकार को आवंटित करता है और उन्हें शून्य पर प्रारंभ करता है। फिर स्मृति में एक शून्य सूचक लौटाता है। फ्री () फ़ंक्शन का उपयोग आवंटित मेमोरी को पुन: आवंटित करने के लिए किया जाता है। और realloc फ़ंक्शन पहले से आवंटित मेमोरी को संशोधित कर सकता है। कॉलोक या मॉलोक का उपयोग करके मेमोरी आवंटित करने के बाद, मेमोरी का आकार तय हो जाता है, लेकिन रीयलोक फ़ंक्शन का उपयोग करके उन्हें बढ़ाया या घटाया जा सकता है।जावा में, गतिशील स्मृति आवंटन के लिए संग्रह का उपयोग किया जा सकता है।
गतिशील मेमोरी आवंटन का मुख्य लाभ यह है कि यह मेमोरी को बचाता है। प्रोग्रामर मेमोरी आवंटित कर सकता है या आवश्यकतानुसार मेमोरी जारी कर सकता है। मेमोरी को निष्पादन के दौरान पुन: आवंटित किया जा सकता है और जब इसकी आवश्यकता नहीं होती है तो मेमोरी को मुक्त कर सकता है। गतिशील स्मृति आवंटन स्थिर स्मृति आवंटन से भी कुशल है। एक नुकसान यह है कि गतिशील स्मृति आवंटन को लागू करना जटिल है।
स्थिर और गतिशील मेमोरी आवंटन के बीच समानताएं क्या हैं?
- दोनों स्मृति आवंटन तंत्र हैं।
- दोनों को प्रोग्रामर द्वारा मैन्युअल रूप से लागू किया जाना चाहिए।
स्थिर और गतिशील स्मृति आवंटन के बीच क्या अंतर है?
स्थिर बनाम गतिशील स्मृति आवंटन |
|
स्टेटिक मेमोरी एलोकेशन मेमोरी आवंटित करने की एक विधि है, और एक बार मेमोरी आवंटित होने के बाद, इसे ठीक कर दिया जाता है। | गतिशील स्मृति आवंटन स्मृति आवंटित करने की एक विधि है, और स्मृति आवंटित होने के बाद, इसे बदला जा सकता है। |
संशोधन | |
स्थिर स्मृति आवंटन में, प्रारंभिक आवंटन के बाद आकार बदलना संभव नहीं है। | डायनेमिक मेमोरी आवंटन में, मेमोरी को तदनुसार छोटा या अधिकतम किया जा सकता है। |
कार्यान्वयन | |
स्टेटिक मेमोरी आवंटन को लागू करना आसान है। | गतिशील स्मृति आवंटन लागू करने के लिए जटिल है। |
गति | |
स्थिर स्मृति में, आवंटन निष्पादन गतिशील स्मृति आवंटन से तेज है। | गतिशील मेमोरी में, आवंटन निष्पादन स्थिर मेमोरी आवंटन की तुलना में धीमा है। |
स्मृति उपयोग | |
स्थिर स्मृति आवंटन में, अप्रयुक्त स्मृति का पुन: उपयोग नहीं किया जा सकता है। | गतिशील स्मृति आवंटन स्मृति का पुन: उपयोग करने की अनुमति देता है। आवश्यकता पड़ने पर प्रोग्रामर अधिक मेमोरी आवंटित कर सकता है। आवश्यकता पड़ने पर वह स्मृति को मुक्त कर सकता है। |
सारांश - स्टेटिक बनाम डायनामिक मेमोरी आवंटन
प्रोग्रामिंग में, स्टेटिक मेमोरी एलोकेशन और डायनेमिक मेमोरी एलोकेशन मेमोरी को आवंटित करने के लिए दो तंत्र हैं। स्टैटिक और डायनेमिक मेमोरी एलोकेशन के बीच का अंतर यह है कि स्टैटिक मेमोरी एलोकेशन में एक बार मेमोरी आवंटित होने के बाद, मेमोरी का आकार तय हो जाता है जबकि डायनेमिक मेमोरी एलोकेशन में, मेमोरी आवंटित होने के बाद, मेमोरी का आकार बदला जा सकता है। प्रोग्रामर यह तय कर सकता है कि एप्लिकेशन के आधार पर मेमोरी स्थिर या गतिशील होनी चाहिए या नहीं।
स्थिर बनाम गतिशील स्मृति आवंटन का पीडीएफ डाउनलोड करें
आप इस लेख का पीडीएफ संस्करण डाउनलोड कर सकते हैं और उद्धरण नोट के अनुसार इसे ऑफ़लाइन उद्देश्यों के लिए उपयोग कर सकते हैं। कृपया पीडीएफ संस्करण यहां डाउनलोड करें: स्थिर और गतिशील मेमोरी आवंटन के बीच अंतर