logo

Dynamische geheugentoewijzing in C

Het concept van dynamische geheugentoewijzing in c-taal stelt de C-programmeur in staat geheugen toe te wijzen tijdens runtime . Dynamische geheugentoewijzing in c-taal is mogelijk door 4 functies van het stdlib.h-headerbestand.

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

Voordat we bovenstaande functies leren, moeten we eerst het verschil begrijpen tussen statische geheugentoewijzing en dynamische geheugentoewijzing.

statische geheugentoewijzingdynamische geheugentoewijzing
geheugen wordt toegewezen tijdens het compileren.geheugen wordt tijdens runtime toegewezen.
het geheugen kan niet worden vergroot tijdens het uitvoeren van een programma.het geheugen kan worden vergroot tijdens het uitvoeren van een programma.
gebruikt in array.gebruikt in gekoppelde lijst.

Laten we nu eens snel kijken naar de methoden die worden gebruikt voor dynamische geheugentoewijzing.

malloc() wijst een enkel blok van het gevraagde geheugen toe.
calloc() wijst meerdere blokken met aangevraagd geheugen toe.
realloc() wijst het geheugen dat wordt ingenomen door de functies malloc() of calloc() opnieuw toe.
vrij() maakt het dynamisch toegewezen geheugen vrij.

malloc()-functie in C

De functie malloc() wijst een enkel blok met aangevraagd geheugen toe.

Het initialiseert het geheugen niet tijdens de uitvoering, dus het heeft aanvankelijk een waarde van afval.

Het retourneert NULL als het geheugen niet voldoende is.

De syntaxis van de malloc()-functie wordt hieronder gegeven:

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

Laten we het voorbeeld van de malloc()-functie bekijken.

 #include #include int main(){ int n,i,*ptr,sum=0; printf(&apos;Enter number of elements: &apos;); scanf(&apos;%d&apos;,&amp;n); ptr=(int*)malloc(n*sizeof(int)); //memory allocated using malloc if(ptr==NULL) { printf(&apos;Sorry! unable to allocate memory&apos;); exit(0); } printf(&apos;Enter elements of array: &apos;); for(i=0;i<n;++i) { scanf('%d',ptr+i); sum+="*(ptr+i);" } printf('sum="%d&apos;,sum);" free(ptr); return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter elements of array: 3 Enter elements of array: 10 10 10 Sum=30 </pre> <h2>calloc() function in C</h2> <p>The calloc() function allocates multiple block of requested memory.</p> <p>It initially initialize all bytes to zero.</p> <p>It returns NULL if memory is not sufficient.</p> <p>The syntax of calloc() function is given below:</p> <pre> ptr=(cast-type*)calloc(number, byte-size) </pre> <p>Let&apos;s see the example of calloc() function.</p> <pre> #include #include int main(){ int n,i,*ptr,sum=0; printf(&apos;Enter number of elements: &apos;); scanf(&apos;%d&apos;,&amp;n); ptr=(int*)calloc(n,sizeof(int)); //memory allocated using calloc if(ptr==NULL) { printf(&apos;Sorry! unable to allocate memory&apos;); exit(0); } printf(&apos;Enter elements of array: &apos;); for(i=0;i<n;++i) { scanf('%d',ptr+i); sum+="*(ptr+i);" } printf('sum="%d&apos;,sum);" free(ptr); return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter elements of array: 3 Enter elements of array: 10 10 10 Sum=30 </pre> <h2>realloc() function in C</h2> <p>If memory is not sufficient for malloc() or calloc(), you can reallocate the memory by realloc() function. In short, it changes the memory size.</p> <p>Let&apos;s see the syntax of realloc() function.</p> <pre> ptr=realloc(ptr, new-size) </pre> <h2>free() function in C</h2> <p>The memory occupied by malloc() or calloc() functions must be released by calling free() function. Otherwise, it will consume memory until program exit.</p> <p>Let&apos;s see the syntax of free() function.</p> <pre> free(ptr) </pre> <hr></n;++i)></pre></n;++i)>

calloc()-functie in C

De functie calloc() wijst meerdere blokken met aangevraagd geheugen toe.

Het initialiseert aanvankelijk alle bytes naar nul.

Het retourneert NULL als het geheugen niet voldoende is.

Java sorteert een lijst

De syntaxis van de calloc()-functie wordt hieronder gegeven:

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

Laten we het voorbeeld van de calloc()-functie bekijken.

 #include #include int main(){ int n,i,*ptr,sum=0; printf(&apos;Enter number of elements: &apos;); scanf(&apos;%d&apos;,&amp;n); ptr=(int*)calloc(n,sizeof(int)); //memory allocated using calloc if(ptr==NULL) { printf(&apos;Sorry! unable to allocate memory&apos;); exit(0); } printf(&apos;Enter elements of array: &apos;); for(i=0;i<n;++i) { scanf(\'%d\',ptr+i); sum+="*(ptr+i);" } printf(\'sum="%d&apos;,sum);" free(ptr); return 0; < pre> <p> <strong>Output</strong> </p> <pre> Enter elements of array: 3 Enter elements of array: 10 10 10 Sum=30 </pre> <h2>realloc() function in C</h2> <p>If memory is not sufficient for malloc() or calloc(), you can reallocate the memory by realloc() function. In short, it changes the memory size.</p> <p>Let&apos;s see the syntax of realloc() function.</p> <pre> ptr=realloc(ptr, new-size) </pre> <h2>free() function in C</h2> <p>The memory occupied by malloc() or calloc() functions must be released by calling free() function. Otherwise, it will consume memory until program exit.</p> <p>Let&apos;s see the syntax of free() function.</p> <pre> free(ptr) </pre> <hr></n;++i)>

realloc()-functie in C

Als het geheugen niet voldoende is voor malloc() of calloc(), kunt u het geheugen opnieuw toewijzen met de functie realloc(). Kortom, het verandert de geheugengrootte.

Laten we de syntaxis van de functie realloc() bekijken.

 ptr=realloc(ptr, new-size) 

free()-functie in C

Het geheugen dat wordt ingenomen door de functies malloc() of calloc() moet worden vrijgegeven door de functie free() aan te roepen. Anders zal het geheugen verbruiken totdat het programma wordt afgesloten.

Laten we de syntaxis van de functie free() bekijken.

 free(ptr)