malloc()
malloc() फ़ंक्शन का उपयोग अनुरोधित आकार के बाइट्स आवंटित करने के लिए किया जाता है और यह आवंटित मेमोरी के पहले बाइट का पॉइंटर लौटाता है। यदि यह विफल होता है तो यह नल पॉइंटर लौटाता है।
C में सिंटैक्स
pointer_name = (cast-type*) malloc(size);
पैरामीटर्स:
- pointer_name - पॉइंटर को दिया गया कोई भी नाम।
- cast-type - वह डेटाटाइप जिसमें आप malloc() द्वारा आवंटित मेमोरी को कास्ट करना चाहते हैं।
- size - बाइट्स में आवंटित मेमोरी का आकार।
उदाहरण
#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
free()
free() फ़ंक्शन का उपयोग malloc() द्वारा आवंटित मेमोरी को डीएलोकेट करने के लिए किया जाता है। यह पॉइंटर के मान को नहीं बदलता जिसका अर्थ है कि यह अभी भी उसी मेमोरी लोकेशन को इंगित करता है।
C में सिंटैक्स
void free(void *pointer_name);
पैरामीटर्स:
- pointer_name - पॉइंटर को दिया गया कोई भी नाम।
उदाहरण
#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);
free(p);
return 0;
}
आउटपुट
ऐरे के एलिमेंट्स दर्ज करें: 32 23 21 28 योग: 104