logo

Dynamická alokace paměti v C

Koncept dynamická alokace paměti v jazyce c umožňuje programátoru C alokovat paměť za běhu . Dynamická alokace paměti v jazyce c je možná pomocí 4 funkcí hlavičkového souboru stdlib.h.

  1. malloc()
  2. calloc()
  3. realloc()
  4. volný, uvolnit()

Než se naučíme výše uvedené funkce, pochopme rozdíl mezi statickou alokací paměti a dynamickou alokací paměti.

statické přidělení pamětidynamická alokace paměti
paměť je alokována v době kompilace.paměť je alokována za běhu.
paměť nelze zvětšit během provádění programu.paměť lze zvětšit během provádění programu.
používá se v poli.použitý v propojeném seznamu.

Nyní se pojďme rychle podívat na metody používané pro dynamickou alokaci paměti.

malloc() alokuje jeden blok požadované paměti.
calloc() alokuje více bloků požadované paměti.
realloc() přerozdělí paměť obsazenou funkcemi malloc() nebo calloc().
volný, uvolnit() uvolní dynamicky alokovanou paměť.

funkce malloc() v C

Funkce malloc() alokuje jeden blok požadované paměti.

Neinicializuje paměť v době provádění, takže má zpočátku hodnotu nesmyslu.

Pokud paměť nestačí, vrátí hodnotu NULL.

Syntaxe funkce malloc() je uvedena níže:

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

Podívejme se na příklad funkce malloc().

kali linuxový terminál
 #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)>

funkce calloc() v C

Funkce calloc() alokuje více bloků požadované paměti.

Nejprve inicializuje všechny bajty na nulu.

Pokud paměť nestačí, vrátí hodnotu NULL.

Syntaxe funkce calloc() je uvedena níže:

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

Podívejme se na příklad funkce calloc().

 #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)>

funkce realloc() v C

Pokud paměť nestačí pro malloc() nebo calloc(), můžete ji znovu alokovat pomocí funkce realloc(). Zkrátka mění velikost paměti.

Podívejme se na syntaxi funkce realloc().

 ptr=realloc(ptr, new-size) 

funkce free() v C

Paměť obsazená funkcemi malloc() nebo calloc() musí být uvolněna voláním funkce free(). Jinak bude spotřebovávat paměť až do ukončení programu.

Podívejme se na syntaxi funkce free().

 free(ptr)