C लाइब्रेरी मेमोरी एलोकेशन फंक्शन void *realloc(void *ptr, size_t size) ptr द्वारा इंगित मेमोरी ब्लॉक का आकार बदलने का प्रयास करता है जिसे पहले malloc या calloc के कॉल से एलोकेट किया गया था।
मेमोरी एलोकेशन फंक्शन्स
मेमोरी को दो तरीकों से एलोकेट किया जा सकता है:

एक बार कंपाइल टाइम पर मेमोरी एलोकेट हो जाने के बाद, इसे एक्जीक्यूशन के दौरान बदला नहीं जा सकता। इससे या तो मेमोरी की कमी या बर्बादी की समस्या होती है।
समाधान है मेमोरी को डायनामिकली बनाना यानी प्रोग्राम के एक्जीक्यूशन के दौरान यूजर की आवश्यकता के अनुसार।
डायनामिक मेमोरी मैनेजमेंट के लिए उपयोग की जाने वाली स्टैंडर्ड लाइब्रेरी फंक्शन्स निम्नलिखित हैं:
- malloc()
- calloc()
- realloc()
- free()
realloc() फंक्शन
इसका उपयोग पहले से एलोकेटेड मेमोरी को फिर से एलोकेट करने के लिए किया जाता है।
यह एलोकेटेड मेमोरी को घटा या बढ़ा सकता है।
यह एक वॉइड पॉइंटर लौटाता है जो रीएलोकेटेड मेमोरी के बेस एड्रेस को इंगित करता है।
realloc() फंक्शन का सिंटैक्स निम्नलिखित है:
void *realloc(void *pointer, size_t newsize);
उदाहरण
निम्नलिखित उदाहरण realloc() फंक्शन के उपयोग को दर्शाता है:
int *ptr; ptr = (int *) malloc(1000); // calloc भी उपयोग कर सकते हैं ptr = (int *) realloc(ptr, 500); // आकार घटाना ptr = (int *) realloc(ptr, 1500); // आकार बढ़ाना
उदाहरण: realloc() फंक्शन का उपयोग करने वाला C प्रोग्राम
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr, i, num;
printf("ऐरे का आकार 5 है\n");
ptr = (int*) calloc(5, sizeof(int));
if (ptr == NULL) {
printf("मेमोरी एलोकेशन विफल");
exit(1); // प्रोग्राम से बाहर निकलें
}
for (i = 0; i < 5; i++) {
printf("%d पर नंबर दर्ज करें: ", i);
scanf("%d", ptr + i);
}
printf("\nआइए ऐरे का आकार 7 तक बढ़ाएं\n");
ptr = (int*) realloc(ptr, 7 * sizeof(int));
if (ptr == NULL) {
printf("मेमोरी एलोकेशन विफल");
exit(1);
}
printf("\n2 और इंटीजर्स दर्ज करें\n\n");
for (i = 5; i < 7; i++) {
printf("%d पर एलिमेंट नंबर दर्ज करें: ", i);
scanf("%d", ptr + i);
}
printf("\nपरिणाम ऐरे है: \n\n");
for (i = 0; i < 7; i++) {
printf("%d ", *(ptr + i));
}
return 0;
}
आउटपुट
उपरोक्त प्रोग्राम को निष्पादित करने पर निम्नलिखित परिणाम प्राप्त होता है:
ऐरे का आकार 5 है 0 पर नंबर दर्ज करें: 23 1 पर नंबर दर्ज करें: 12 2 पर नंबर दर्ज करें: 45 3 पर नंबर दर्ज करें: 67 4 पर नंबर दर्ज करें: 20 आइए ऐरे का आकार 7 तक बढ़ाएं 2 और इंटीजर्स दर्ज करें 5 पर एलिमेंट नंबर दर्ज करें: 90 6 पर एलिमेंट नंबर दर्ज करें: 60 परिणाम ऐरे है: 23 12 45 67 20 90 60