Концепт динамичка алокација меморије у језику ц омогућава Ц програматору да додели меморију у току рада . Динамичка алокација меморије у ц језику је могућа помоћу 4 функције заглавља стдлиб.х.
- маллоц()
- цаллоц()
- реаллоц()
- бесплатно()
Пре него што научимо горе наведене функције, хајде да разумемо разлику између статичке алокације меморије и динамичке алокације меморије.
статичка алокација меморије | динамичка алокација меморије |
---|---|
меморија се додељује у време компајлирања. | меморија се додељује у време извршавања. |
меморија се не може повећати током извршавања програма. | меморија се може повећати током извршавања програма. |
користи се у низу. | користи се у повезаној листи. |
Хајде сада да брзо погледамо методе које се користе за динамичку алокацију меморије.
маллоц() | додељује један блок тражене меморије. |
цаллоц() | додељује више блокова тражене меморије. |
реаллоц() | поново додељује меморију коју заузимају функције маллоц() или цаллоц(). |
бесплатно() | ослобађа динамички додељену меморију. |
маллоц() функција у Ц
Функција маллоц() додељује један блок тражене меморије.
алгебра скупова
Не иницијализује меморију у време извршавања, тако да у почетку има вредност смећа.
Враћа НУЛЛ ако меморија није довољна.
Синтакса функције маллоц() је дата у наставку:
ptr=(cast-type*)malloc(byte-size)
Погледајмо пример функције маллоц().
#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)>
цаллоц() функција у Ц
Цаллоц() функција додељује више блокова тражене меморије.
како претворити цхар у стринг јава
У почетку иницијализује све бајтове на нулу.
Враћа НУЛЛ ако меморија није довољна.
Синтакса функције цаллоц() је дата у наставку:
ptr=(cast-type*)calloc(number, byte-size)
Погледајмо пример функције цаллоц().
#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)>
реаллоц() функција у Ц
Ако меморија није довољна за маллоц() или цаллоц(), можете поново доделити меморију помоћу функције реаллоц(). Укратко, мења величину меморије.
Хајде да видимо синтаксу функције реаллоц().
ptr=realloc(ptr, new-size)
фрее() функција у Ц
Меморија коју заузимају функције маллоц() или цаллоц() мора се ослободити позивањем функције фрее(). У супротном, трошиће меморију до изласка из програма.
Хајде да видимо синтаксу функције фрее().
free(ptr)