Malloc () बनाम calloc (): मुख्य अंतर उदाहरणों के साथ समझाया गया है

विषय - सूची:

Anonim

मॉलॉक और कैलोक के बीच अंतर जानने से पहले आइए जानें-

डायनेमिक मेमोरी आवंटन क्या है?

डायनामिक मेमोरी एलोकेशन रन टाइम पर मेमोरी आवंटित करने की एक प्रक्रिया है। चार लाइब्रेरी रूटीन, कॉलोक (), फ्री (), रियललॉक (), और मॉलोक () हैं, जिनका उपयोग मेमोरी को आवंटित करने और प्रोग्राम के निष्पादन के दौरान इसे मुक्त करने के लिए किया जा सकता है। ये रूटीन हेडर फ़ाइल में परिभाषित किए जाते हैं जिन्हें stdlib.h कहा जाता है।

मॉलॉक () क्या है?

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

लौटाया गया पॉइंटर प्राय: शून्य प्रकार का होता है। इसका मतलब है कि हम किसी भी पॉइंटर को मॉलोक फ़ंक्शन असाइन कर सकते हैं। मॉलॉक का पूर्ण रूप मेमोरी आवंटन है।

इस ट्यूटोरियल में, आप सीखेंगे:

  • डायनेमिक मेमोरी आवंटन क्या है?
  • मॉलॉक () क्या है?
  • कॉलोक () क्या है?
  • मॉलॉक () का उपयोग क्यों करें?
  • Calloc () का उपयोग क्यों करें?
  • सिंटेक्स ऑफ़ मल्कोक ()
  • कॉलोक का सिंटैक्स ()
  • सी में मॉलोक () का उदाहरण
  • C में calloc () का उदाहरण
  • Calloc () और Malloc के बीच अंतर ()

कॉलोक () क्या है?

कॉलोक () फ़ंक्शन का उपयोग मेमोरी के कई ब्लॉकों को आवंटित करने के लिए किया जाता है। यह एक डायनामिक मेमोरी एलोकेशन फंक्शन है, जिसका उपयोग मेमोरी को कॉम्प्लेक्स डेटा स्ट्रक्चर जैसे कि एरे और स्ट्रक्चर को आवंटित करने के लिए किया जाता है। यदि यह फ़ंक्शन निर्दिष्ट स्थान को आवंटित करने में विफल रहता है, तो यह रिटर्न सूचक को शून्य कर देगा। कॉलोक फ़ंक्शन का पूर्ण रूप सन्निहित आवंटन है।

मॉलॉक () का उपयोग क्यों करें?

यहां मालोक का उपयोग करने के कारण हैं ()

  • जब आपको रनटाइम पर मेमोरी आवंटित करनी हो तो आपको मॉलोक () का उपयोग करना चाहिए।
  • आपको मॉलोक का उपयोग करना चाहिए जब आपको उन वस्तुओं को आवंटित करना होगा जो वर्तमान मेमोरी ब्लॉक के निष्पादन से परे मौजूद होना चाहिए।
  • मॉलॉक () के लिए जाएं यदि आपको उस स्टैक के आकार से अधिक मेमोरी आवंटित करने की आवश्यकता है।
  • यह आवंटित स्थान के पहले बाइट को पॉइंटर लौटाता है।
  • यह डेवलपर्स को मेमोरी आवंटित करने में सक्षम बनाता है क्योंकि यह सटीक मात्रा में आवश्यक है।
  • यह फ़ंक्शन ढेर से मेमोरी ब्लॉक आकार को आवंटित करता है।

Calloc () का उपयोग क्यों करें?

यहाँ कॉलोक () का उपयोग करने के कारण हैं

  • जब आपको आवंटित मेमोरी को शून्य पर सेट करना होगा।
  • आप मेमोरी हेल ​​तक पहुंच प्राप्त करने के लिए एक पॉइंटर का उपयोग करने वाले कॉलक का उपयोग कर सकते हैं।
  • उपयोग किया जाता है जब आपको मेमोरी को पॉइंटर वापस करने के लिए तत्वों को शून्य करने की आवश्यकता होती है।
  • मालकॉक के साथ अतिप्रवाह को रोकने के लिए ()
  • पहले से ही शून्य हो जाने वाले पृष्ठ का अनुरोध करने के लिए कॉलोक () का उपयोग करें।

सिंटेक्स ऑफ़ मल्कोक ()

यहाँ एक प्रकार का पौधा () है

ptr = (cast_type *) malloc (byte_size);

ऊपर सिंटैक्स में, ptr, cast_type का सूचक है। मॉलॉक फ़ंक्शन बाइट_साइज़ की आवंटित मेमोरी के लिए एक पॉइंटर लौटाता है।

Example: ptr = (int *) malloc (50)

जब इस कथन को सफलतापूर्वक निष्पादित किया जाता है, तो 50 बाइट्स का मेमोरी स्पेस आरक्षित होता है। आरक्षित स्थान के पहले बाइट का पता सूचक को टाइप int के "ptr" को सौंपा गया है।

कॉलोक का सिंटैक्स ()

यहाँ एक प्रकार का पौधा () है

ptr = (cast_type *) calloc (n, size);

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

सी में मॉलोक () का उदाहरण

Bellow code में 15 पूर्णांकों के मेमोरी ब्लॉक को आवंटित करने के लिए sizeof (* ptr) का उपयोग किया जाता है। प्रिंटफ स्टेटमेंट में, हम 6 वें पूर्णांक का मान पा रहे हैं।

#include#includeint main(){int *ptr;ptr = malloc(15 * sizeof(*ptr));if (ptr != NULL) {*(ptr + 5) = 480;printf("Value of the 6th integer is %d",*(ptr + 5));}}

आउटपुट:

6 वें पूर्णांक का मान 480 है

C में calloc () का उदाहरण

नीचे सी भाषा कार्यक्रम पहले दस शब्दों के योग की गणना करता है। यदि संकेतक शून्य है, तो स्मृति स्थान आवंटित नहीं किया जाएगा।

लूप के लिए एक वैरिएबल "i" के मूल्य को पुनरावृत्त करने और योग को प्रिंट करने के लिए उपयोग किया जाता है। अंत में, पॉइंटर को फ्री-अप करने के लिए फंक्शन फ्री का उपयोग किया जाता है।

#include #include int main() {int i, * ptr, sum = 0;ptr = calloc(10, sizeof(int));if (ptr == NULL) {printf("Error! memory not allocated.");exit(0);}printf("Building and calculating the sequence sum of the first 10 terms \n");for (i = 0; i < 10; ++i) { * (ptr + i) = i;sum += * (ptr + i);}printf("Sum = %d", sum);free(ptr);return 0;}

आउटपुट:

प्रथम 10 पदों के अनुक्रम योग का निर्माण और गणना n n = 45

Calloc () और Malloc के बीच अंतर ()

मलरोक () और कॉलोक () के बीच महत्वपूर्ण अंतर हैं:

मैलोक () कॉलोक ()
Malloc () फ़ंक्शन उपयोगकर्ता द्वारा निर्दिष्ट आकार की मेमोरी का एक एकल ब्लॉक बनाएगा। कॉलोक () फ़ंक्शन एक चर के लिए मेमोरी के कई ब्लॉक असाइन कर सकता है।
मलॉक फ़ंक्शन में कचरा मूल्य होता है। एक कॉलोक फ़ंक्शन द्वारा आवंटित मेमोरी ब्लॉक को हमेशा शून्य पर आरंभीकृत किया जाता है।
तर्कों की संख्या 2 है। तर्क की संख्या 1 है।
कॉलोक मॉलॉक की तुलना में धीमा है। कॉलोक की तुलना में मलोक अधिक तेज है।
यह कॉलोक की तुलना में सुरक्षित नहीं है। यह मॉलॉक की तुलना में उपयोग करने के लिए सुरक्षित है।
कॉलोक () की तुलना में समय दक्षता अधिक है। मॉलॉक () की तुलना में समय दक्षता कम है।
मलॉक () फ़ंक्शन केवल शुरुआती पता देता है और इसे शून्य नहीं बनाता है। पता आवंटित करने से पहले, Calloc () फ़ंक्शन प्रारंभिक पता देता है और इसे शून्य बनाता है।
यह स्मृति का प्रारंभिक प्रदर्शन नहीं करता है। यह स्मृति आरंभीकरण करता है।

प्रमुख स्रोत:

  • मॉलॉक () फ़ंक्शन केवल शुरुआती पता देता है और दूसरी ओर इसे शून्य नहीं बनाता है, कॉलोक () फ़ंक्शन शुरुआती पते को वापस करता है और शून्य बनाता है।
  • मॉलॉक फ़ंक्शन में, तर्कों की संख्या 2 है जबकि कॉलोक फ़ंक्शन में, तर्क की संख्या 1 है।
  • मॉलॉक () समय दक्षता कॉलोक () से अधिक है जबकि कॉलोक () की तुलना में मॉलोक () सुरक्षित नहीं है
  • मैलोक मेमोरी को इनिशियलाइज़ नहीं करता है जबकि कॉलॉक मेमोरी इनिशियलाइज़ेशन करता है।