realloc() Function in Hindi
/ BCA / Programming with C and CPP
realloc() Function in Hindi
What is realloc() Function in Hindi
Introduction of realloc() Function
जब हम C या C++ जैसी भाषाओं में dynamic memory allocation करते हैं, तो हम ज़्यादातर तीन functions का उपयोग करते हैं: malloc(), calloc(), और realloc()। इनमें से realloc() function का उपयोग तब किया जाता है जब हमें पहले से allocate की गई memory को resize करना हो – यानी उसे बढ़ाना या घटाना हो।
इसे समझने के लिए एक real-life उदाहरण लेते हैं — मान लीजिए आपने 2 लोगों के बैठने की कुर्सियाँ बुक की थीं (2 blocks memory), लेकिन अब आपको 4 लोगों को बैठाना है, तो आपको और कुर्सियाँ जोड़नी होंगी। यही काम computer memory में realloc() function करता है।
Purpose of realloc()
- पहले से allocate की गई memory को नया size देने के लिए।
- Memory को दुबारा allocate करके उसमें पुराना data सुरक्षित रखना।
- Program के समय के अनुसार memory की जरूरत बदलने पर उपयोगी होता है।
Header File
#include <stdlib.h>
realloc() function को use करने के लिए आपको stdlib.h header file को include करना होता है।
Syntax and Example of realloc() Function in Hindi
Syntax of realloc() Function
void *realloc(void *ptr, size_t new_size);
- ptr: वो pointer है जो पहले से malloc() या calloc() के जरिए memory allocate कर चुका है।
- new_size: नए memory block का size (bytes में) जिसे हम assign करना चाहते हैं।
- return value: यह function एक नया pointer लौटाता है जो नई memory को point करता है। अगर memory allocate नहीं हो पाती तो NULL return करता है।
Simple Example of realloc() Function
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr;
int i;
ptr = (int*) malloc(2 * sizeof(int));
if (ptr == NULL) {
printf("Memory not allocated.\n");
exit(0);
} else {
ptr[0] = 10;
ptr[1] = 20;
printf("Before realloc:\n");
for (i = 0; i < 2; i++)
printf("%d ", ptr[i]);
ptr = realloc(ptr, 4 * sizeof(int));
ptr[2] = 30;
ptr[3] = 40;
printf("\nAfter realloc:\n");
for (i = 0; i < 4; i++)
printf("%d ", ptr[i]);
free(ptr);
}
return 0;
}
Output
Before realloc:
10 20
After realloc:
10 20 30 40
Resizing Memory Block using realloc() Function in Hindi
Memory Resize कैसे काम करता है?
- जब हम realloc() का उपयोग करते हैं, तो system कोशिश करता है कि existing memory block को नया size दे दे।
- अगर पुरानी जगह में sufficient space नहीं होता, तो यह नया memory block allocate करता है और पुराना data उसमें copy कर देता है।
- फिर पुराना block free कर दिया जाता है और नया pointer return होता है।
Important Points
- अगर realloc() NULL return करता है तो इसका मतलब है कि नया memory allocation असफल रहा है।
- हमेशा realloc से return हुआ नया pointer original pointer में assign करें, जैसे:
ptr = realloc(ptr, new_size); - अगर आप सीधे पुराने pointer को realloc करते हैं और realloc fail हो जाता है, तो आपका original data भी खो सकता है। इसलिए एक temporary pointer में पहले store करना अच्छा तरीका है:
int *temp;
temp = realloc(ptr, new_size);
if (temp != NULL) {
ptr = temp;
} else {
// Error handling
}
Example: User-defined size
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr, n, i;
printf("Enter number of elements: ");
scanf("%d", &n);
ptr = (int*) malloc(n * sizeof(int));
if (ptr == NULL) {
printf("Memory allocation failed");
exit(1);
}
for (i = 0; i < n; i++) {
ptr[i] = i + 1;
}
printf("Original array:\n");
for (i = 0; i < n; i++) {
printf("%d ", ptr[i]);
}
printf("\nEnter new size: ");
scanf("%d", &n);
ptr = realloc(ptr, n * sizeof(int));
for (i = 0; i < n; i++) {
ptr[i] = i + 1;
}
printf("Resized array:\n");
for (i = 0; i < n; i++) {
printf("%d ", ptr[i]);
}
free(ptr);
return 0;
}
Use Cases of realloc()
- जब user से input के आधार पर memory size बार-बार बदलता हो।
- जब हमें dynamic array बनाना हो और elements की संख्या पहले से तय न हो।
- Memory का efficient उपयोग करने के लिए।
Advantages of realloc()
- Memory को waste होने से बचाता है।
- Program flexible और dynamic बनता है।
- जितनी जरूरत हो, उतनी ही memory use होती है।
Disadvantages of realloc()
- अगर सही तरीके से handle न किया जाए तो memory leak हो सकता है।
- Old pointer overwrite हो सकता है अगर realloc fail हो जाए।
- Performance थोड़ी सी slow हो सकती है अगर बार-बार realloc करना पड़े।
Note:
- realloc() केवल malloc() या calloc() से allocate की गई memory पर ही काम करता है।
- free() का उपयोग करके memory को program के अंत में जरूर free करें।
FAQs
void *realloc(void *ptr, size_t new_size); जहाँ ptr पहले से allocated memory block का pointer होता है और new_size नए memory block का size होता है।