Концепцията за динамично разпределение на паметта на език c позволява на C програмиста да разпределя памет по време на изпълнение . Динамичното разпределение на паметта на езика c е възможно чрез 4 функции на заглавния файл stdlib.h.
- malloc()
- calloc()
- realloc()
- Безплатно()
Преди да научим горните функции, нека разберем разликата между статично разпределение на памет и динамично разпределение на памет.
функция за извикване на javascript от html
разпределение на статична памет | динамично разпределение на паметта |
---|---|
паметта се разпределя по време на компилиране. | паметта се разпределя по време на изпълнение. |
паметта не може да се увеличи по време на изпълнение на програмата. | паметта може да се увеличи по време на изпълнение на програмата. |
използвани в масив. | използвани в свързан списък. |
Сега нека да разгледаме бързо методите, използвани за динамично разпределение на паметта.
malloc() | разпределя единичен блок от заявената памет. |
calloc() | разпределя множество блокове от заявената памет. |
realloc() | преразпределя паметта, заета от функции malloc() или calloc(). |
Безплатно() | освобождава динамично разпределената памет. |
функция malloc() в C
Функцията malloc() разпределя единичен блок от заявената памет.
Той не инициализира паметта по време на изпълнение, така че първоначално има стойност за боклук.
Раджиникант
Връща NULL, ако паметта не е достатъчна.
Синтаксисът на функцията malloc() е даден по-долу:
ptr=(cast-type*)malloc(byte-size)
Нека видим примера на функцията malloc().
#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() в C
Функцията calloc() заделя множество блокове от заявената памет.
Първоначално инициализира всички байтове до нула.
Връща NULL, ако паметта не е достатъчна.
Синтаксисът на функцията calloc() е даден по-долу:
java сравним интерфейс
ptr=(cast-type*)calloc(number, byte-size)
Нека видим примера на функцията calloc().
#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() в C
Ако паметта не е достатъчна за malloc() или calloc(), можете да преразпределите паметта чрез функцията realloc(). Накратко, променя размера на паметта.
Нека видим синтаксиса на функцията realloc().
добавяне на низове java
ptr=realloc(ptr, new-size)
функция free() в C
Паметта, заета от функциите malloc() или calloc(), трябва да бъде освободена чрез извикване на функцията free(). В противен случай ще консумира памет до излизане от програмата.
Нека видим синтаксиса на функцията free().
free(ptr)