BCA / B.Tech 8 min read

malloc() & calloc() in C in Hindi

malloc() & calloc() in C Language in Hindi | C भाषा में हिंदी में :


  • C प्रोग्रामिंग भाषा में मेमोरी मैनेजमेंट का एक महत्वपूर्ण हिस्सा डायनामिक मेमोरी एलोकेशन है, जहाँ मेमोरी को रनटाइम (runtime) पर आवंटित किया जाता है।
  •  डायनामिक मेमोरी एलोकेशन के लिए C में मुख्यतः दो फ़ंक्शन उपयोग किए जाते हैं: malloc() और calloc()। 
  • ये फ़ंक्शन प्रोग्राम को मैन्युअली मेमोरी आवंटित करने और उसका प्रबंधन करने में मदद करते हैं।
  • C भाषा में डायनामिक मेमोरी एलोकेशन के लिए malloc() और calloc() महत्वपूर्ण फ़ंक्शन होते हैं। दोनों फ़ंक्शन का उपयोग मेमोरी आवंटित करने के लिए किया जाता है, लेकिन उनके उपयोग और कार्यप्रणाली में अंतर होता है। malloc() बिना इनिशियलाइज़ेशन के मेमोरी देता है,
  •  जबकि calloc() मेमोरी को 0 से इनिशियलाइज़ करता है। दोनों फ़ंक्शन्स को सही तरीके से इस्तेमाल करने से मेमोरी मैनेजमेंट में कुशलता बढ़ती है।
malloc() और calloc() का परिचय :

1. malloc() (Memory Allocation) :


malloc() (memory allocation) फ़ंक्शन का उपयोग डायनामिक रूप से मेमोरी का एक ब्लॉक आवंटित करने के लिए किया जाता है। यह फ़ंक्शन मेमोरी आवंटित करने के लिए दिए गए बाइट्स की संख्या के आधार पर काम करता है।

2. calloc() (Contiguous Allocation) :

calloc() (contiguous allocation) फ़ंक्शन भी डायनामिक मेमोरी आवंटित करता है, लेकिन इसमें मेमोरी का ब्लॉक लगातार हिस्सों में विभाजित होता है और आवंटित मेमोरी को 0 से इनिशियलाइज करता है।

malloc() function in C language in Hindi | malloc() फ़ंक्शन हिंदी में :

1. सिंटैक्स (Syntax)

ptr = (cast_type *) malloc(size_in_bytes);
ptr: यह पॉइंटर है, जो आवंटित मेमोरी ब्लॉक का पहला एड्रेस रखेगा।
cast_type: डेटा टाइप का कास्ट, जैसे int*, float* आदि।
size_in_bytes: आवंटित की जाने वाली मेमोरी की कुल बाइट्स।

2. उदाहरण (Example)

int *ptr;
ptr = (int *) malloc(4 * sizeof(int));  // 4 integers के लिए मेमोरी आवंटित करना
ऊपर दिए गए उदाहरण में, malloc() 4 इंटीजर के लिए मेमोरी आवंटित कर रहा है। यह एक सीधी मेमोरी ब्लॉक देता है, जिसे किसी प्रकार की वैल्यू से इनिशियलाइज़ नहीं किया जाता है।

3. विशेषताएँ (Features)

malloc() सिर्फ मेमोरी का आवंटन करता है, लेकिन आवंटित मेमोरी को इनिशियलाइज़ नहीं करता।
अगर मेमोरी आवंटन असफल रहता है, तो malloc() NULL रिटर्न करता है।

4. कमियाँ (Drawbacks)

मेमोरी को इनिशियलाइज़ नहीं किया जाता है, इसलिए इसमें कचरा डेटा (garbage data) हो सकता है।
बड़ी मेमोरी आवंटन के मामले में, अगर पर्याप्त मेमोरी उपलब्ध नहीं होती है, तो यह असफल हो सकता है और NULL रिटर्न करता है।

calloc() in C language in Hindi | सी भाषामें calloc() हिंदी में :

1. सिंटैक्स (Syntax)

ptr = (cast_type *) calloc(num_elements, size_of_element);
ptr: यह आवंटित मेमोरी ब्लॉक का पहला एड्रेस रखेगा।
num_elements: आवंटित किए जाने वाले एलिमेंट्स की संख्या।
size_of_element: प्रत्येक एलिमेंट का साइज (बाइट्स में)।

2. उदाहरण (Example)

int *ptr;
ptr = (int *) calloc(4, sizeof(int));  // 4 integers के लिए मेमोरी आवंटित करना
यह उदाहरण calloc() द्वारा 4 इंटीजर के लिए मेमोरी आवंटित करता है और उसे 0 से इनिशियलाइज़ करता है।

3. विशेषताएँ (Features)

calloc() मेमोरी आवंटित करने के साथ-साथ उसे 0 से इनिशियलाइज़ करता है।
यदि मेमोरी आवंटन असफल रहता है, तो यह NULL रिटर्न करता है।

4. कमियाँ (Drawbacks)

हालांकि calloc() मेमोरी को इनिशियलाइज़ करता है, लेकिन इसमें थोड़ा अधिक समय लगता है क्योंकि इसे हर ब्लॉक को 0 से इनिशियलाइज़ करना पड़ता है।

malloc() और calloc() के बीच मुख्य अंतर :


Memory Freeing in C in Hindi | मेमोरी को फ्री करना :


C में डायनामिक मेमोरी एलोकेशन करते समय, यह ज़रूरी है कि आवंटित की गई मेमोरी को जब उपयोग न हो, तब उसे मुक्त कर दिया जाए। इसके लिए free() फ़ंक्शन का उपयोग किया जाता है।

1. सिंटैक्स (Syntax)

free(ptr);
यह मेमोरी को मुक्त करता है जिसे पहले malloc() या calloc() के द्वारा आवंटित किया गया था।

2. उदाहरण (Example)

int *ptr;
ptr = (int *) malloc(4 * sizeof(int));
// कुछ ऑपरेशन्स के बाद
free(ptr);  // आवंटित मेमोरी को मुक्त करना

Advantages in malloc() & calloc() in Hindi | उपयोग के लाभ :

  • डायनामिक मेमोरी एलोकेशन: रनटाइम पर मेमोरी आवंटित करने की सुविधा प्रदान करता है।
  • लचीलापन: यह प्रोग्रामिंग में लचीलापन देता है, जहां आवश्यकता के अनुसार मेमोरी का आवंटन और रिलीज किया जा सकता है।
  • बड़ी प्रोग्राम्स: बड़े प्रोग्राम्स और डेटा स्ट्रक्चर्स जैसे लिंक्ड लिस्ट, ट्री, आदि के लिए उपयुक्त होता है।
Disadvantages malloc() & calloc() in Hindi |  उपयोग की हानियाँ :

  • मेमोरी लीक: यदि आवंटित मेमोरी को फ्री नहीं किया जाता, तो यह मेमोरी लीक की समस्या उत्पन्न कर सकता है।
  • NULL पॉइंटर: मेमोरी आवंटन असफल होने पर NULL पॉइंटर की समस्या हो सकती है।
  • इनिशियलाइज़ेशन की आवश्यकता: malloc() में इनिशियलाइज़ेशन की आवश्यकता होती है, अन्यथा अनवांछित परिणाम मिल सकते हैं।