calloc()
फ़ंक्शन calloc() का मतलब contiguous allocation (सन्निकट आवंटन) है। यह malloc() के समान काम करता है लेकिन यह समान आकार के मेमोरी के कई ब्लॉक्स एलोकेट करता है।
यहां C भाषा में calloc() का सिंटैक्स है:
void *calloc(size_t number, size_t size);
यहां,
number - एलोकेट किए जाने वाले ऐरे के तत्वों की संख्या।
size - बाइट्स में एलोकेटेड मेमोरी का आकार।
यहां C भाषा में calloc() का एक उदाहरण है:
उदाहरण
#include <stdio.h>
#include <stdlib.h>
int main() {
int n = 4, i, *p, s = 0;
p = (int*) calloc(n, sizeof(int));
if (p == NULL) {
printf("\nएरर! मेमोरी एलोकेट नहीं हुई।");
exit(0);
}
printf("\nऐरे के तत्व दर्ज करें: ");
for (i = 0; i < n; ++i) {
scanf("%d", p + i);
s += *(p + i);
}
printf("\nयोग: %d", s);
return 0;
}
आउटपुट
ऐरे के तत्व दर्ज करें: 2 24 35 12 योग: 73
उपरोक्त प्रोग्राम में, मेमोरी ब्लॉक calloc() द्वारा एलोकेट किया जाता है। यदि पॉइंटर वेरिएबल null है, तो कोई मेमोरी एलोकेशन नहीं है। यदि पॉइंटर वेरिएबल null नहीं है, तो यूजर को ऐरे के चार तत्व दर्ज करने होंगे और फिर तत्वों का योग निकाला जाता है।
malloc()
फ़ंक्शन malloc() का उपयोग अनुरोधित आकार के बाइट्स को एलोकेट करने के लिए किया जाता है और यह एलोकेटेड मेमोरी के पहले बाइट के लिए एक पॉइंटर लौटाता है। यदि विफल होता है तो यह null पॉइंटर लौटाता है।
यहां C भाषा में malloc() का सिंटैक्स है:
pointer_name = (cast-type*) malloc(size);
यहां,
pointer_name - पॉइंटर को दिया गया कोई भी नाम।
cast-type - वह डेटाटाइप जिसमें आप malloc() द्वारा एलोकेटेड मेमोरी को कास्ट करना चाहते हैं।
size - बाइट्स में एलोकेटेड मेमोरी का आकार।
यहां C भाषा में malloc() का एक उदाहरण है:
उदाहरण
#include <stdio.h>
#include <stdlib.h>
int main() {
int n = 4, i, *p, s = 0;
p = (int*) malloc(n * sizeof(int));
if (p == NULL) {
printf("\nएरर! मेमोरी एलोकेट नहीं हुई।");
exit(0);
}
printf("\nऐरे के तत्व दर्ज करें: ");
for (i = 0; i < n; ++i) {
scanf("%d", p + i);
s += *(p + i);
}
printf("\nयोग: %d", s);
return 0;
}
आउटपुट
ऐरे के तत्व दर्ज करें: 32 23 21 8 योग: 84
उपरोक्त प्रोग्राम में, चार वेरिएबल्स घोषित किए गए हैं और उनमें से एक पॉइंटर वेरिएबल *p है जो malloc द्वारा एलोकेटेड मेमोरी को स्टोर कर रहा है। ऐरे के तत्व यूजर द्वारा प्रिंट किए जाते हैं और तत्वों का योग प्रिंट किया जाता है।
मुख्य अंतर
| विशेषता | calloc() | malloc() |
|---|---|---|
| पैरामीटर्स | दो (number, size) | एक (size) |
| इनिशियलाइज़ेशन | एलोकेटेड मेमोरी को शून्य से इनिशियलाइज़ करता है | मेमोरी अनइनिशियलाइज़्ड रहती है (गार्बेज वैल्यू) |
| उपयोग | ऐरे और स्ट्रक्चर्स के लिए बेहतर | सिंगल मेमोरी ब्लॉक के लिए सामान्य उपयोग |
| प्रदर्शन | थोड़ा धीमा (ज़ीरोइंग के कारण) | थोड़ा तेज़ |