सी भाषा में, शून्य पॉइंटर्स को ऑब्जेक्ट पॉइंटर प्रकार में परोक्ष रूप से परिवर्तित किया जाता है। फ़ंक्शन malloc() C89 मानक में शून्य * देता है। सी के पुराने संस्करणों में, malloc() चार * देता है। सी ++ भाषा में, डिफ़ॉल्ट रूप से malloc() int मान देता है। इसलिए, स्पष्ट कास्टिंग का उपयोग करके पॉइंटर्स को ऑब्जेक्ट पॉइंटर्स में बदल दिया जाता है।
C भाषा में मेमोरी आवंटित करने का सिंटैक्स निम्नलिखित है।
pointer_name = malloc(size);
यहाँ,
pointer_name - पॉइंटर को दिया गया कोई भी नाम।
आकार - बाइट्स में आवंटित मेमोरी का आकार।
निम्नलिखित C भाषा में malloc() का एक उदाहरण है।
उदाहरण
#include <stdio.h>
#include <stdlib.h>
int main() {
int n = 4, i, *p, s = 0;
p = malloc(n * sizeof(int));
if(p == NULL) {
printf("\nError! memory not allocated.");
exit(0);
}
printf("\nEnter elements of array : ");
for(i = 0; i < n; ++i) {
scanf("%d", p + i);
s += *(p + i);
}
printf("\nSum : %d", s);
return 0;
} आउटपुट
Enter elements of array : 2 28 12 32 Sum : 74
उपरोक्त उदाहरण में C भाषा में, यदि हम स्पष्ट कास्टिंग करते हैं, तो यह कोई त्रुटि नहीं दिखाएगा।
C++ भाषा में मेमोरी आवंटित करने का सिंटैक्स निम्नलिखित है।
pointer_name = (cast-type*) malloc(size);
यहाँ,
pointer_name - पॉइंटर को दिया गया कोई भी नाम।
कास्ट-प्रकार - डेटाटाइप जिसमें आप आवंटित मेमोरी को malloc() द्वारा डालना चाहते हैं।
आकार - बाइट्स में आवंटित मेमोरी का आकार।
निम्नलिखित C++ भाषा में malloc() का एक उदाहरण है।
उदाहरण
#include <iostream>
using namespace std;
int main() {
int n = 4, i, *p, s = 0;
p = (int *)malloc(n * sizeof(int));
if(p == NULL) {
cout << "\nError! memory not allocated.";
exit(0);
}
cout << "\nEnter elements of array : ";
for(i = 0; i < n; ++i) {
cin >> (p + i);
s += *(p + i);
}
cout << "\nSum : ", s;
return 0;
} आउटपुट
Enter elements of array : 28 65 3 8 Sum : 104
उपरोक्त उदाहरण में C++ भाषा में, यदि हम स्पष्ट कास्टिंग नहीं करेंगे, तो प्रोग्राम निम्न त्रुटि दिखाएगा।
error: invalid conversion from ‘void*’ to ‘int*’ [-fpermissive] p = malloc(n * sizeof(int));