Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C भाषा में Realloc क्या है?


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

मेमोरी एलोकेशन फंक्शन्स

मेमोरी को दो तरीकों से एलोकेट किया जा सकता है:

C भाषा में Realloc क्या है?

एक बार कंपाइल टाइम पर मेमोरी एलोकेट हो जाने के बाद, इसे एक्जीक्यूशन के दौरान बदला नहीं जा सकता। इससे या तो मेमोरी की कमी या बर्बादी की समस्या होती है।

समाधान है मेमोरी को डायनामिकली बनाना यानी प्रोग्राम के एक्जीक्यूशन के दौरान यूजर की आवश्यकता के अनुसार।

डायनामिक मेमोरी मैनेजमेंट के लिए उपयोग की जाने वाली स्टैंडर्ड लाइब्रेरी फंक्शन्स निम्नलिखित हैं:

  • 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

  1. C भाषा में strcmp() फंक्शन क्या है? C भाषा में strcmp() फंक्शन क्या है?

    C लाइब्रेरी फंक्शन int strcmp(const char *str1, const char *str2) str1 द्वारा इंगित स्ट्रिंग की तुलना str2 द्वारा इंगित स्ट्रिंग से करता है। कैरेक्टर्स का ऐरे स्ट्रिंग कहलाता है। घोषणा ऐरे के लिए घोषणा निम्नलिखित है: char stringname[size]; उदाहरण: char string[50]; 50 कैरेक्टर्स लंबाई की स्ट्रिंग

  1. - C भाषा में पहचानकर्ता (Identifier) क्या है?

    पहचानकर्ता (Identifier) का परिचय C प्रोग्रामिंग में पहचानकर्ता (Identifier) किसी भी चर (variable), फंक्शन, डेटा परिभाषा, लेबल आदि के लिए उपयोग किया जाने वाला नाम होता है। किसी भी प्रोग्रामिंग भाषा को सीखने से पहले आपको यह जानना आवश्यक है कि पहचानकर्ताओं को कैसे नाम दिया जाता है। C भाषा में पहचानकर

  1. - C# प्रोग्रामिंग क्या है?

    C# माइक्रोसॉफ्ट द्वारा विकसित एक आधुनिक, सामान्य-उद्देश्य, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा है।C# को कॉमन लैंग्वेज इंफ्रास्ट्रक्चर (CLI) के लिए डिज़ाइन किया गया है, जिसमें एक्जीक्यूटेबल कोड और रनटाइम वातावरण शामिल है जो विभिन्न हाई-लेवल लैंग्वेजेस को विभिन्न कंप्यूटर प्लेटफॉर्म और आर्किटेक्चर पर