सी पुस्तकालय स्मृति आवंटन समारोह शून्य * malloc(size_t size) अनुरोधित स्मृति आवंटित करता है और इसे एक सूचक देता है।
स्मृति आवंटन कार्य
मेमोरी को दो तरह से आवंटित किया जा सकता है जैसा कि नीचे बताया गया है -
एक बार मेमोरी को कंपाइल समय पर आवंटित कर दिया जाता है, इसे निष्पादन के दौरान बदला नहीं जा सकता है। या तो अपर्याप्तता की समस्या होगी या फिर याददाश्त की बर्बादी होगी।
इसका समाधान प्रोग्राम के निष्पादन के दौरान उपयोगकर्ता की आवश्यकता के अनुसार गतिशील रूप से मेमोरी बनाना है।
गतिशील स्मृति प्रबंधन के लिए उपयोग किए जाने वाले मानक पुस्तकालय कार्य इस प्रकार हैं -
- मॉलोक ( )
- कॉलॉक ( )
- रियललॉक ( )
- निःशुल्क ( )
द मॉलॉक () फंक्शन
इस फ़ंक्शन का उपयोग रनटाइम पर बाइट्स में मेमोरी के ब्लॉक को आवंटित करने के लिए किया जाता है। यह एक शून्य सूचक देता है, जो आवंटित स्मृति के आधार पते को इंगित करता है।
मॉलोक () का सिंटैक्स इस प्रकार है -
void *malloc (बाइट्स में आकार)
उदाहरण 1
निम्न उदाहरण malloc() फ़ंक्शन के उपयोग को दर्शाता है।
int *ptr;ptr =(int * ) malloc (1000);int *ptr;ptr =(int * ) malloc (n * sizeof (int));
नोट - अगर मेमोरी फ्री नहीं है तो यह NULL लौटाता है।
उदाहरण कार्यक्रम
गतिशील स्मृति आवंटन फ़ंक्शन प्रदर्शित करने के लिए सी प्रोग्राम नीचे दिया गया है - malloc()।
#शामिल करें इंट * पी; // तत्वों को I / p // प्रिंटफ के रूप में पढ़ना ("सरणी में तत्वों की संख्या दर्ज करें:"); स्कैनफ ("% d", और numofele); // मॉलोक फ़ंक्शन घोषित करना // p =(int *) malloc (numofele * (sizeof (int))); // पॉइंटर्स की सरणी में तत्वों को पढ़ना // for(i=0;iआउटपुट
जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
सरणी में तत्वों की संख्या दर्ज करें:सरणी का 4Element 0 है:सरणी का 1Element 1 है:सरणी का 2Element 2 है:सरणी का 3Element 3 है:4उदाहरण 2
गतिशील स्मृति आवंटन कार्यों का उपयोग करके तत्वों को प्रदर्शित करने के लिए सी प्रोग्राम निम्नलिखित है -
पहले पांच ब्लॉक खाली होने चाहिए, दूसरे पांच ब्लॉक में लॉजिक होना चाहिए।
#include#include void main(){ // वेरिएबल और पॉइंटर्स घोषित करना, sum// int numofe,i,sum=0; इंट * पी; // उपयोगकर्ता से तत्वों की संख्या पढ़ना // प्रिंटफ ("तत्वों की संख्या दर्ज करें:"); स्कैनफ ("% d", और numofe); // कॉलिंग malloc () फ़ंक्शन // p =(int *) malloc (numofe * sizeof (int)); /*प्रिंटिंग ओ/पी - हमें if स्टेटमेंट का उपयोग करना होगा क्योंकि हमें यह जांचना है कि मेमोरी को सफलतापूर्वक आवंटित/आरक्षित किया गया है या नहीं*/ if (p==NULL){ प्रिंटफ ("मेमोरी उपलब्ध नहीं है"); बाहर निकलें (0); } // मुद्रण तत्व // प्रिंटफ ("तत्व दर्ज करें:\ n"); for(i=0;i आउटपुट
जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
तत्वों की संख्या दर्ज करें :5तत्व दर्ज करें :1210244567तत्वों का योग 158 है।