logo

Калок в C

Тази тема ще обсъди как да създадете динамично разпределение на паметта с помощта на функцията calloc() в езика за програмиране C. Преди да преминем през концепциите, нека обсъдим динамичното разпределение на паметта в C. Динамичната памет е процедура за структурно програмиране, която позволява на потребителите да разпределят паметта по време на изпълнение на програмата. Използвайки динамично разпределение на паметта, можем да увеличим или намалим паметта по време на изпълнение на програма. По този начин се избягва загубата на компютърна памет. Разпределението на паметта е разделено на две части - функция malloc() и calloc().

Калок в C

А функция calloc(). е предварително дефинирана библиотечна функция, която означава непрекъснато разпределение на паметта . Функцията calloc() се използва за създаване на множество блокове по време на изпълнение на програма с еднакъв размер в паметта. Функция calloc е дефинирана вътре в stdlib.h заглавен файл. Има два параметъра, не. от блокове и размера на всеки блок. Когато динамичната памет се разпределя с помощта на функцията calloc(), тя връща основния адрес на първия блок и всеки блок се инициализира с 0. И ако паметта не е създадена, тя връща NULL указател.

какво е autowired в java

Да предположим например, че искаме да създадем три блока памет с помощта на функцията calloc(), трябва да предадем два параметъра, брой блокове (3) и размера на всеки блок (int, char, float и т.н.) в байтът. По този начин той създава три блока, чийто размер е еднакъв в паметта на компютъра.

Синтаксис

 ptr = (cast_type *) calloc ( number_of_blocks, size_of_block); 

В горния синтаксис функцията calloc() има два параметъра. Първият параметър определя брой блокове а вторият параметър определя размер на всеки блок в памет. Размерът на блоковете и cast_type може да бъде int, char, float и т.н.

Връщане : Връща основния адрес на първия блок към променливата ptr.

Програмата за проверка на динамичната памет се разпределя с помощта на функцията calloc().

Нека напишем проста програма, която да проверява дали динамичната памет е разпределена в C.

програма.c

 #include #include int main() { int *ptr; /* use calloc() function to define the no. of blocks and size of each blocks. */ ptr = calloc (4, sizeof(int)); // here 4 is the no. of block and int is the size of block if (ptr != NULL) { printf (' Memory is created successfully 
'); } else printf (' Memory is not created '); return 0; } 

Изход:

 Memory is created successfully 

Програма за демонстриране на използването на функцията calloc().

Нека обмислим създаването на динамично разпределение на паметта с помощта на функцията calloc() и съхраняване на данни в блоковете памет.

Програма2.c

 #include #include #include void main() { int n, *ptr, *p, i, sum = 0; /* n = number of elements, *ptr = store base address of the dynamic memory, *p store temporary address of the *ptr */ printf (' Enter the number of elements: '); scanf (' %d', &n); // it takes number of elements // use calloc syntax to create memory block of int data type ptr = (int *) calloc (n, sizeof(int)); p = ptr; // assign the address of ptr if (ptr == NULL) // it checks whether the memory is allocated { printf (' Memory is not allocated. '); exit(0); // exit from the program } printf (' Enter %d numbers 
&apos;, n); for ( i = 1; i <= n; i++) { scanf ( '%d', ptr); sum="sum" + *ptr; ptr++; } printf (' elements are: '); for (i="1;" i <="n;" %d', *p); p++; 
 the addition of is: %d ', sum); getch(); pre> <p> <strong>Output:</strong> </p> <pre> Enter the number of elements: 5 Enter 5 numbers 1 2 3 4 5 Elements are: 1 2 3 4 5 The addition of the elements is: 15 </pre> <h3>Program to release dynamic memory allocation using free() function</h3> <p> <strong>free() function:</strong> A free() function is used to release the dynamic memory which is created either <strong>calloc</strong> () or <strong>malloc</strong> () function. These allocated memories cannot be freed to their own, and they will exist till the end of the program. So, it is our responsibility to release that memory that can be reused, and hence we explicitly use the free() function to release the memory.</p> <p> <strong>Syntax</strong> </p> <pre> free (ptr); </pre> <p>Here free() is a function that releases the allocated memory using the pointer ptr variable.</p> <p>Let&apos;s consider creating dynamic memory allocation using the calloc() function and then releasing occupied space using the free() function in the C program.</p> <p> <strong>Release.c</strong> </p> <pre> #include #include #include void main() { int n, *ptr, *p, i, sum = 0; printf (&apos; Define the number of elements to be entered: &apos;); scanf (&apos; %d&apos;, &amp;n); // use calloc syntax to create memory block of int data type ptr = (int *) calloc (n, sizeof(int)); p = ptr; // store the base address in p if (ptr == NULL) { printf (&apos; Out of memory &apos;); exit(0); } printf (&apos; Enter the elements 
&apos;, n); for ( i = 1; i <= n; i++) { scanf ( '%d', ptr); sum="sum" + *ptr; ptr++; } printf (' elements are: '); for (i="1;" i <="n;" %d', *p); p++; 
 the addition of is: %d ', sum); free(ptr); * use free() function to release dynamic memory allocation getch(); pre> <p> <strong>Output:</strong> </p> <pre> Define the number of elements to be entered: 6 Enter the elements 2 4 6 8 10 12 Elements are: 2 4 6 8 10 12 The addition of the elements is: 42 </pre> <hr></=></pre></=>

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

функция free(): Функцията free() се използва за освобождаване на динамичната памет, която се създава calloc () или malloc () функция. Тези разпределени памети не могат да бъдат освободени и ще съществуват до края на програмата. Така че наша отговорност е да освободим тази памет, която може да се използва повторно, и следователно ние изрично използваме функцията free() за освобождаване на паметта.

Синтаксис

 free (ptr); 

Тук free() е функция, която освобождава разпределената памет с помощта на променливата ptr на показалеца.

Нека помислим за създаване на динамично разпределение на паметта с помощта на функцията calloc() и след това освобождаване на заето пространство с помощта на функцията free() в C програмата.

Освобождаване.c

 #include #include #include void main() { int n, *ptr, *p, i, sum = 0; printf (&apos; Define the number of elements to be entered: &apos;); scanf (&apos; %d&apos;, &amp;n); // use calloc syntax to create memory block of int data type ptr = (int *) calloc (n, sizeof(int)); p = ptr; // store the base address in p if (ptr == NULL) { printf (&apos; Out of memory &apos;); exit(0); } printf (&apos; Enter the elements 
&apos;, n); for ( i = 1; i <= n; i++) { scanf ( \'%d\', ptr); sum="sum" + *ptr; ptr++; } printf (\' elements are: \'); for (i="1;" i <="n;" %d\', *p); p++; 
 the addition of is: %d \', sum); free(ptr); * use free() function to release dynamic memory allocation getch(); pre> <p> <strong>Output:</strong> </p> <pre> Define the number of elements to be entered: 6 Enter the elements 2 4 6 8 10 12 Elements are: 2 4 6 8 10 12 The addition of the elements is: 42 </pre> <hr></=>