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

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

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

स्मृति आवंटन कार्य

मेमोरी को दो तरह से आवंटित किया जा सकता है जैसा कि नीचे बताया गया है -

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

एक बार मेमोरी को कंपाइल समय पर आवंटित कर दिया जाता है, इसे निष्पादन के दौरान बदला नहीं जा सकता है। या तो अपर्याप्तता की समस्या होगी या फिर याददाश्त की बर्बादी होगी।

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

गतिशील स्मृति प्रबंधन के लिए उपयोग किए जाने वाले मानक पुस्तकालय कार्य इस प्रकार हैं -

  • मॉलोक ( )
  • कॉलॉक ( )
  • रियललॉक ( )
  • निःशुल्क ( )

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

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

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

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

    एक पहचानकर्ता का उपयोग आपके प्रोग्राम में किसी भी चर, फ़ंक्शन, डेटा परिभाषा, लेबल आदि के लिए किया जाता है। किसी भी भाषा को शुरू करने से पहले, आपको कम से कम यह पता होना चाहिए कि आप किसी पहचानकर्ता का नाम कैसे रखते हैं। सी भाषा में, एक पहचानकर्ता अल्फ़ान्यूमेरिक वर्णों का एक संयोजन होता है, यानी पहल

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

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