https://www.rakeshmgs.in/search/label/Template
https://www.rakeshmgs.in

Learn in Hindi

RakeshMgs

Dynamic Memory Allocation in C Programming Hindi Notes

रविवार, मार्च 21, 2021

Dynamic Memory Allocation in C

runtime पर memory allocating करने की process को dynamic memory allocation के रूप में जाना जाता है। किसी program के execution के दौरान memory को allocating करने और free करने के लिए memory management function के रूप में Library routines का उपयोग किया जाता है। ये फ़ंक्शन stdlib.h header file में define किए गए हैं।



Memory Allocation Process

global variable, static variable और program निर्देश उनकी मेमोरी को a permanent storage area में प्राप्त करते हैं जबकि local variable को Stack नामक memory area में store किया जाता है।
इन दो region के बीच की memory space को Heap area के रूप में जाना जाता है। इस region का उपयोग program के execution के दौरान dynamic memory allocation के लिए किया जाता है। Heap की size बदलत रहता है।

Allocating block of Memory

malloc() फ़ंक्शन का उपयोग रनटाइम पर block of memory को allocate करने के लिए किया जाता है। यह फ़ंक्शन दिए गए size की मेमोरी का एक block रखता है और प्रकार void का एक pointer लौटाता है। इसका मतलब है कि हम इसे typecasting का उपयोग करके किसी भी प्रकार के पॉइंटर को assign कर सकते हैं। यदि यह allocate enough space में विफल रहता है, तो यह एक NULL पॉइंटर लौटाता है।

Syntax:

	
	
void* malloc(byte-size)

Time for an Example: malloc()

int *x; x = (int*)malloc(50 * sizeof(int)); //memory space allocated to variable x free(x); //releases the memory allocated to variable x

calloc () एक अन्य memory allocation function है जो runtime पर memory allocation करने के लिए उपयोग किया जाता है। calloc फ़ंक्शन आम तौर पर derived data प्रकारों जैसे कि arrays और structures को memory allocation करने के लिए उपयोग किया जाता है। यदि यह allocate enough space को allocate करने में विफल रहता है, तो यह एक NULL pointer return करता है।

Syntax:

void* calloc(number of items,element-size)

Time for an Example: calloc()

struct employee { char *name; int salary; }; typedef struct employee emp; emp *e1; e1 = (emp*)calloc(30,sizeof(emp));

realloc() पहले से ही डायनामिक रूप से किसी variable में allocated memory size को बदल देता है।

Syntax:

void* realloc(pointer, new-size)

Time for an Example: realloc()

int *x; x = (int*)malloc(50 * sizeof(int)); x = (int*)realloc(x,100); //allocated a new memory to variable x