Konceptet med dynamisk hukommelsesallokering i c-sprog gør det muligt for C-programmøren at allokere hukommelse under kørsel . Dynamisk hukommelsesallokering i c-sprog er mulig med 4 funktioner i stdlib.h header-fil.
- malloc()
- calloc()
- realloc()
- gratis()
Før vi lærer ovenstående funktioner, lad os forstå forskellen mellem statisk hukommelsesallokering og dynamisk hukommelsesallokering.
statisk hukommelsesallokering | dynamisk hukommelsesallokering |
---|---|
hukommelse tildeles på kompileringstidspunktet. | hukommelse tildeles ved kørsel. |
hukommelsen kan ikke øges, mens programmet køres. | hukommelsen kan øges, mens programmet udføres. |
bruges i array. | brugt i linket liste. |
Lad os nu tage et hurtigt kig på de metoder, der bruges til dynamisk hukommelsesallokering.
malloc() | tildeler enkelt blok af anmodet hukommelse. |
calloc() | allokerer flere blok af anmodet hukommelse. |
realloc() | omallokerer hukommelsen optaget af malloc()- eller calloc()-funktioner. |
gratis() | frigør den dynamisk allokerede hukommelse. |
malloc() funktion i C
Malloc()-funktionen tildeler en enkelt blok af anmodet hukommelse.
sammenligne metode java
Den initialiserer ikke hukommelse ved udførelsestidspunktet, så den har oprindeligt skraldværdi.
strengen er tom
Det returnerer NULL, hvis hukommelsen ikke er tilstrækkelig.
Syntaksen for malloc()-funktionen er angivet nedenfor:
ptr=(cast-type*)malloc(byte-size)
Lad os se eksemplet med malloc()-funktionen.
#include #include int main(){ int n,i,*ptr,sum=0; printf('Enter number of elements: '); scanf('%d',&n); ptr=(int*)malloc(n*sizeof(int)); //memory allocated using malloc if(ptr==NULL) { printf('Sorry! unable to allocate memory'); exit(0); } printf('Enter elements of array: '); for(i=0;i<n;++i) { scanf('%d',ptr+i); sum+="*(ptr+i);" } printf('sum="%d',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's see the example of calloc() function.</p> <pre> #include #include int main(){ int n,i,*ptr,sum=0; printf('Enter number of elements: '); scanf('%d',&n); ptr=(int*)calloc(n,sizeof(int)); //memory allocated using calloc if(ptr==NULL) { printf('Sorry! unable to allocate memory'); exit(0); } printf('Enter elements of array: '); for(i=0;i<n;++i) { scanf('%d',ptr+i); sum+="*(ptr+i);" } printf('sum="%d',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'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's see the syntax of free() function.</p> <pre> free(ptr) </pre> <hr></n;++i)></pre></n;++i)>
calloc() funktion i C
Calloc()-funktionen allokerer flere blokke af anmodet hukommelse.
Det initialiserer i første omgang alle bytes til nul.
sort array liste java
Det returnerer NULL, hvis hukommelsen ikke er tilstrækkelig.
Syntaksen for calloc()-funktionen er angivet nedenfor:
ptr=(cast-type*)calloc(number, byte-size)
Lad os se eksemplet med calloc()-funktionen.
mylivecricket.
#include #include int main(){ int n,i,*ptr,sum=0; printf('Enter number of elements: '); scanf('%d',&n); ptr=(int*)calloc(n,sizeof(int)); //memory allocated using calloc if(ptr==NULL) { printf('Sorry! unable to allocate memory'); exit(0); } printf('Enter elements of array: '); for(i=0;i<n;++i) { scanf(\'%d\',ptr+i); sum+="*(ptr+i);" } printf(\'sum="%d',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'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's see the syntax of free() function.</p> <pre> free(ptr) </pre> <hr></n;++i)>
realloc() funktion i C
Hvis hukommelsen ikke er tilstrækkelig til malloc() eller calloc(), kan du omallokere hukommelsen ved hjælp af realloc()-funktionen. Kort sagt ændrer det hukommelsesstørrelsen.
Lad os se syntaksen for realloc()-funktionen.
ptr=realloc(ptr, new-size)
free() funktion i C
Hukommelsen optaget af malloc()- eller calloc()-funktioner skal frigives ved at kalde free()-funktionen. Ellers vil den optage hukommelse, indtil programmet afsluttes.
Lad os se syntaksen for free()-funktionen.
free(ptr)