C लाइब्रेरी मेमोरी एलोकेशन फंक्शन void *calloc(size_t nitems, size_t size) अनुरोधित मेमोरी को एलोकेट करता है और इसके लिए एक पॉइंटर लौटाता है।
malloc और calloc में अंतर यह है कि malloc मेमोरी को शून्य पर सेट नहीं करता, जबकि calloc एलोकेटेड मेमोरी को शून्य पर सेट करता है।
मेमोरी एलोकेशन फंक्शन्स
मेमोरी को दो तरीकों से एलोकेट किया जा सकता है:

एक बार कंपाइल टाइम पर मेमोरी एलोकेट हो जाने के बाद, इसे एक्जीक्यूशन के दौरान बदला नहीं जा सकता। इससे या तो मेमोरी की कमी या बर्बादी की समस्या होती है।
समाधान है मेमोरी को डायनामिकली बनाना यानी प्रोग्राम के एक्जीक्यूशन के दौरान यूजर की आवश्यकता के अनुसार।
डायनामिक मेमोरी मैनेजमेंट के लिए उपयोग की जाने वाली स्टैंडर्ड लाइब्रेरी फंक्शन्स निम्नलिखित हैं:
- malloc()
- calloc()
- realloc()
- free()
calloc() फंक्शन
यह फंक्शन रनटाइम पर मेमोरी के सतत ब्लॉक्स एलोकेट करने के लिए उपयोग किया जाता है।
यह विशेष रूप से ऐरे के लिए डिज़ाइन किया गया है।
यह एक वॉइड पॉइंटर लौटाता है, जो एलोकेटेड मेमोरी के बेस एड्रेस को इंगित करता है।
calloc() फंक्शन का सिंटैक्स नीचे दिया गया है:
void *calloc(size_t nitems, size_t size)
उदाहरण
निम्नलिखित उदाहरण calloc() फंक्शन के उपयोग को दर्शाता है:
int *ptr; ptr = (int *) calloc(500, 2);
यहां, 2 बाइट्स प्रत्येक के 500 ब्लॉक्स लगातार एलोकेट किए जाएंगे। कुल एलोकेटेड मेमोरी = 1000 बाइट्स।

int *ptr; ptr = (int *) calloc(n, sizeof(int));
उदाहरण प्रोग्राम
नीचे दिया गया C प्रोग्राम डायनामिक मेमोरी एलोकेशन फंक्शन calloc का उपयोग करके एलिमेंट्स के सेट में सम और विषम संख्याओं का योग 계산 करता है।
#include <stdio.h>
#include <stdlib.h>
void main() {
// वेरिएबल्स, पॉइंटर्स घोषित करना
int i, n;
int *p;
int even = 0, odd = 0;
// calloc का उपयोग करके बेस एड्रेस p घोषित करना
p = (int *) calloc(n, sizeof(int));
// एलिमेंट्स की संख्या पढ़ना
printf("एलिमेंट्स की संख्या दर्ज करें: ");
scanf("%d", &n);
/* आउटपुट प्रिंट करना -
* हमें if स्टेटमेंट का उपयोग करना होगा क्योंकि हमें जांचना होगा कि क्या मेमोरी
* सफलतापूर्वक एलोकेट/रिजर्व हुई है या नहीं
*/
if (p == NULL) {
printf("मेमोरी उपलब्ध नहीं है");
exit(0);
}
// फॉर लूप का उपयोग करके एलिमेंट्स को लोकेशन में स्टोर करना
printf("एलिमेंट्स हैं: \n");
for (i = 0; i < n; i++) {
scanf("%d", p + i);
}
for (i = 0; i < n; i++) {
if (*(p + i) % 2 == 0) {
even = even + *(p + i);
} else {
odd = odd + *(p + i);
}
}
printf("सम संख्याओं का योग है: %d\n", even);
printf("विषम संख्याओं का योग है: %d\n", odd);
}
आउटपुट
उपरोक्त प्रोग्राम को निष्पादित करने पर निम्नलिखित परिणाम प्राप्त होता है:
एलिमेंट्स की संख्या दर्ज करें: 4 एलिमेंट्स हैं: 12 56 23 10 सम संख्याओं का योग है: 78 विषम संख्याओं का योग है: 23