Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C भाषा में malloc क्या है?

सी पुस्तकालय स्मृति आवंटन समारोह शून्य * malloc(size_t size) अनुरोधित स्मृति आवंटित करता है और इसे एक सूचक देता है।

स्मृति आवंटन कार्य

मेमोरी को दो तरह से आवंटित किया जा सकता है जैसा कि नीचे बताया गया है -

C भाषा में malloc क्या है?

एक बार मेमोरी को कंपाइल समय पर आवंटित कर दिया जाता है, इसे निष्पादन के दौरान बदला नहीं जा सकता है। या तो अपर्याप्तता की समस्या होगी या फिर याददाश्त की बर्बादी होगी।

इसका समाधान प्रोग्राम के निष्पादन के दौरान उपयोगकर्ता की आवश्यकता के अनुसार गतिशील रूप से मेमोरी बनाना है।

गतिशील स्मृति प्रबंधन के लिए उपयोग किए जाने वाले मानक पुस्तकालय कार्य इस प्रकार हैं -

  • मॉलोक ( )
  • कॉलॉक ( )
  • रियललॉक ( )
  • निःशुल्क ( )

द मॉलॉक () फंक्शन

इस फ़ंक्शन का उपयोग रनटाइम पर बाइट्स में मेमोरी के ब्लॉक को आवंटित करने के लिए किया जाता है। यह एक शून्य सूचक देता है, जो आवंटित स्मृति के आधार पते को इंगित करता है।

मॉलोक () का सिंटैक्स इस प्रकार है -

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#includevoid 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 है। 
  1. सी में एक फ़ंक्शन विनिर्देशक क्या है?

    सी और सी ++ में कुछ फ़ंक्शन विनिर्देशक हैं। फंक्शन स्पेसिफायर का उपयोग फंक्शन प्रॉपर्टी को निर्दिष्ट करने के लिए किया जाता है। C++ में इनलाइन है फ़ंक्शन विनिर्देशक। सी में _Noreturn फ़ंक्शन विनिर्देशक है। इसका उपयोग यह दर्शाने के लिए किया जाता है कि एक फ़ंक्शन कुछ भी वापस नहीं करेगा। उदाहरण #include

  1. सी # प्रोग्रामिंग क्या है?

    C# Microsoft द्वारा विकसित एक आधुनिक, सामान्य-उद्देश्य, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा है। C# को कॉमन लैंग्वेज इन्फ्रास्ट्रक्चर (CLI) के लिए डिज़ाइन किया गया है, जिसमें निष्पादन योग्य कोड और रनटाइम वातावरण होता है जो विभिन्न कंप्यूटर प्लेटफॉर्म और आर्किटेक्चर पर विभिन्न उच्च-स्तरीय भाषाओं के उ

  1. C# में डिक्शनरी क्या है?

    Dictionary C# में कुंजियों और मानों का एक संग्रह है। शब्दकोश System.Collection.Generics नाम स्थान में शामिल है। एक शब्दकोश घोषित करने और आरंभ करने के लिए - IDictionary<int, int> d = new Dictionary<int, int>(); ऊपर, एक शब्दकोश वस्तु घोषित करते समय कुंजी और मूल्य के प्रकार निर्धारित किए