C लाइब्रेरी मेमोरी एलोकेशन फंक्शन void *realloc(void *ptr, size_t size) ptr द्वारा इंगित मेमोरी ब्लॉक का आकार बदलने का प्रयास करता है जिसे पहले malloc या calloc को कॉल के साथ आवंटित किया गया था।
स्मृति आवंटन कार्य
मेमोरी को दो तरह से आवंटित किया जा सकता है जैसा कि नीचे बताया गया है -
एक बार मेमोरी को कंपाइल समय पर आवंटित कर दिया जाता है, इसे निष्पादन के दौरान बदला नहीं जा सकता है। या तो अपर्याप्तता की समस्या होगी या फिर याददाश्त की बर्बादी होगी।
इसका समाधान प्रोग्राम के निष्पादन के दौरान उपयोगकर्ता की आवश्यकता के अनुसार गतिशील रूप से मेमोरी बनाना है।
गतिशील स्मृति प्रबंधन के लिए उपयोग किए जाने वाले मानक पुस्तकालय कार्य इस प्रकार हैं -
- मॉलोक ( )
- कॉलॉक ( )
- रियललॉक ( )
- निःशुल्क ( )
Realloc ( ) फ़ंक्शन
-
इसका उपयोग पहले से आवंटित स्मृति को पुनः आवंटित करने के लिए किया जाता है।
-
यह आवंटित मेमोरी को या तो घटा या बढ़ा सकता है।
-
यह एक शून्य सूचक देता है जो वास्तविक स्मृति के मूल पते को इंगित करता है।
realloc() फ़ंक्शन का सिंटैक्स इस प्रकार है -
Free void *realloc (pointer, newsize);
उदाहरण
निम्न उदाहरण realloc() फ़ंक्शन के उपयोग को दर्शाता है।
int *ptr; ptr = (int * ) malloc (1000);// we can use calloc also - - - - - - - - - ptr = (int * ) realloc (ptr, 500); - - - - - - ptr = (int * ) realloc (ptr, 1500);
उदाहरण
नीचे दिया गया सी प्रोग्राम realloc () फ़ंक्शन का उपयोग कर रहा है -
#include<stdio.h> #include<stdlib.h> int main(){ int *ptr, i, num; printf("array size is 5\n"); ptr = (int*)calloc(5, sizeof(int)); if(ptr==NULL){ printf("Memory allocation failed"); exit(1); // exit the program } for(i = 0; i < 5; i++){ printf("enter number at %d: ", i); scanf("%d", ptr+i); } printf("\nLet's increase the array size to 7\n "); ptr = (int*)realloc(ptr, 7 * sizeof(int)); if(ptr==NULL){ printf("Memory allocation failed"); exit(1); // exit the program } printf("\n enter 2 more integers\n\n"); for(i = 5; i < 7; i++){ printf("Enter element number at %d: ", i); scanf("%d", ptr+i); } printf("\n result array is: \n\n"); for(i = 0; i < 7; i++){ printf("%d ", *(ptr+i) ); } return 0; }
आउटपुट
जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
array size is 5 enter number at 0: 23 enter number at 1: 12 enter number at 2: 45 enter number at 3: 67 enter number at 4: 20 Let's increase the array size to 7 enter 2 more integers Enter element number at 5: 90 Enter element number at 6: 60 result array is: 23 12 45 67 20 90 60