logo

Динамично разпределение на паметта в C

Концепцията за динамично разпределение на паметта на език c позволява на C програмиста да разпределя памет по време на изпълнение . Динамичното разпределение на паметта на езика c е възможно чрез 4 функции на заглавния файл stdlib.h.

  1. malloc()
  2. calloc()
  3. realloc()
  4. Безплатно()

Преди да научим горните функции, нека разберем разликата между статично разпределение на памет и динамично разпределение на памет.

функция за извикване на 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(&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() в C

Функцията calloc() заделя множество блокове от заявената памет.

Първоначално инициализира всички байтове до нула.

Връща NULL, ако паметта не е достатъчна.

Синтаксисът на функцията calloc() е даден по-долу:

java сравним интерфейс
 ptr=(cast-type*)calloc(number, byte-size) 

Нека видим примера на функцията 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)>

функция realloc() в C

Ако паметта не е достатъчна за malloc() или calloc(), можете да преразпределите паметта чрез функцията realloc(). Накратко, променя размера на паметта.

Нека видим синтаксиса на функцията realloc().

добавяне на низове java
 ptr=realloc(ptr, new-size) 

функция free() в C

Паметта, заета от функциите malloc() или calloc(), трябва да бъде освободена чрез извикване на функцията free(). В противен случай ще консумира памет до излизане от програмата.

Нека видим синтаксиса на функцията free().

 free(ptr)