C Language in Hindi – Dynamic memory allocation

Dynamic memory allocation in C in Hindi

Dynamic memory allocation in C in Hindi

C भाषा में डायनेमिक मेमोरी एलोकेशन का concept सी प्रोग्रामर को runtime पर मेमोरी आवंटित करने में सक्षम बनाती है । Cdlib.h हेडर फाइल के 4 फंक्शन्स द्वारा c language में dynamic मेमोरी एलोकेशन संभव है।

  1. malloc()
  2. calloc()
  3. realloc()
  4. free()

उपरोक्त functions को सीखने से पहले, आइए static मेमोरी आवंटन और dynamic मेमोरी आवंटन के बीच अंतर को समझें।

Static memory allocation Dynamic memory allocation
memory को compile time पर आवंटित किया जाता है। मेमोरी को run time पर आवंटित किया जाता है।
प्रोग्राम execute करते समय मेमोरी नहीं बढ़ाई जा सकती। प्रोग्राम execute करते समय मेमोरी बढ़ाई जा सकती है।
array में उपयोग किया जाता है। Linked list में उपयोग किया जाता है।

अब गतिशील मेमोरी आवंटन के लिए उपयोग की जाने वाली विधियों पर एक नज़र डालते हैं।

malloc() अनुरोधित मेमोरी का single block आवंटित करता है।
calloc() अनुरोधित मेमोरी के कई block को आवंटित करता है।
realloc() malloc() या calloc() फ़ंक्शन द्वारा कब्जा की गई मेमोरी को पुनः प्राप्त करता है।
free() dynamic रूप से आवंटित स्मृति को मुक्त करता है।

malloc() function in C in hindi

malloc() फ़ंक्शन अनुरोधित मेमोरी के single block को आवंटित करता है।

यह निष्पादन के समय में मेमोरी को initialize नहीं करता है, इसलिए इसकी शुरुआत में garbage value होता है।

यदि मेमोरी पर्याप्त नहीं है तो यह NULL को लौटाता है।

Malloc () फ़ंक्शन का सिंटैक्स नीचे दिया गया है:

  1. ptr=(cast-type*)malloc(byte-size)  

आइए देखें malloc() फ़ंक्शन का उदाहरण।

  1. #include<stdio.h>  
  2. #include<stdlib.h>  
  3. int main(){  
  4.   int n,i,*ptr,sum=0;    
  5.     printf(“Enter number of elements: “);    
  6.     scanf(“%d”,&n);    
  7.     ptr=(int*)malloc(n*sizeof(int));  //memory allocated using malloc    
  8.     if(ptr==NULL)                         
  9.     {    
  10.         printf(“Sorry! unable to allocate memory”);    
  11.         exit(0);    
  12.     }    
  13.     printf(“Enter elements of array: “);    
  14.     for(i=0;i<n;++i)    
  15.     {    
  16.         scanf(“%d”,ptr+i);    
  17.         sum+=*(ptr+i);    
  18.     }    
  19.     printf(“Sum=%d”,sum);    
  20.     free(ptr);     
  21. return 0;  
  22. }    

Output

Enter elements of array: 3

Enter elements of array: 10

10

10

Sum=30

calloc() function in C in Hindi

calloc() फ़ंक्शन अनुरोधित मेमोरी के कई block को आवंटित करता है।

यह शुरू में सभी bytes को शून्य से शुरू करता है।

यदि मेमोरी पर्याप्त नहीं है तो यह NULL को लौटाता है।

calloc() फ़ंक्शन का सिंटैक्स नीचे दिया गया है:

  1. ptr=(cast-type*)calloc(number, byte-size)    

चलो calloc() फ़ंक्शन का उदाहरण देखें।

  1. #include<stdio.h>  
  2. #include<stdlib.h>  
  3. int main(){  
  4.  int n,i,*ptr,sum=0;    
  5.     printf(“Enter number of elements: “);    
  6.     scanf(“%d”,&n);    
  7.     ptr=(int*)calloc(n,sizeof(int));  //memory allocated using calloc    
  8.     if(ptr==NULL)                         
  9.     {    
  10.         printf(“Sorry! unable to allocate memory”);    
  11.         exit(0);    
  12.     }    
  13.     printf(“Enter elements of array: “);    
  14.     for(i=0;i<n;++i)    
  15.     {    
  16.         scanf(“%d”,ptr+i);    
  17.         sum+=*(ptr+i);    
  18.     }    
  19.     printf(“Sum=%d”,sum);    
  20.     free(ptr);    
  21. return 0;  
  22. }    

Output

Enter elements of array: 3

Enter elements of array: 10

10

10

Sum=30

 

realloc() function in C in Hindi

यदि malloc() या calloc() के लिए मेमोरी पर्याप्त नहीं है, तो आप मेमोरी को realloc() फ़ंक्शन द्वारा पुनः लोड कर सकते हैं। संक्षेप में, यह मेमोरी का आकार बदलता है।

चलो realloc() फ़ंक्शन का सिंटैक्स देखें।

 

  • ptr=realloc(ptr, new-size)  

 

free() function in C in Hindi

malloc() या calloc() फ़ंक्शन द्वारा कब्जा की गई मेमोरी को free() फ़ंक्शन को कॉल करके जारी किया जाना चाहिए। अन्यथा, यह प्रोग्राम से बाहर निकलने तक मेमोरी का उपभोग करेगा।

आइए free() फ़ंक्शन का सिंटैक्स देखें।

  1. free(ptr)  

Leave a Reply

DMCA.com Protection Status