logo

C의 Calloc

이 주제에서는 C 프로그래밍 언어에서 calloc() 함수를 사용하여 동적 메모리 할당을 생성하는 방법에 대해 설명합니다. 개념을 살펴보기 전에 C의 동적 메모리 할당에 대해 논의해 보겠습니다. 동적 메모리는 사용자가 프로그램 실행 시 메모리를 할당할 수 있도록 하는 구조 프로그래밍 절차입니다. 동적 메모리 할당을 사용하면 프로그램 실행 중에 메모리를 늘리거나 줄일 수 있습니다. 이러한 방식으로 컴퓨터 메모리 낭비를 방지합니다. 메모리 할당은 malloc()과 calloc() 함수의 두 부분으로 나뉩니다.

C의 Calloc

calloc() 함수 다음을 의미하는 미리 정의된 라이브러리 함수입니다. 연속 메모리 할당 . calloc() 함수는 프로그램 실행 시 메모리에 동일한 크기를 갖는 여러 블록을 생성하는 데 사용됩니다. calloc 함수는 내부에 정의되어 있습니다. stdlib.h 헤더 파일. 여기에는 두 개의 매개변수가 있습니다. 블록의 수와 각 블록의 크기. calloc() 함수를 사용하여 동적 메모리를 할당하면 첫 번째 블록의 기본 주소를 반환하고 각 블록은 0으로 초기화됩니다. 그리고 메모리가 생성되지 않으면 NULL 포인터를 반환합니다.

예를 들어, calloc() 함수를 사용하여 세 개의 메모리 블록을 생성하려면 두 개의 매개변수, 즉 블록 수(3)와 각 블록의 크기(int, char, float 등)를 전달해야 한다고 가정합니다. 바이트. 이런 방식으로 컴퓨터 메모리 내부에 동일한 크기의 블록 3개를 생성합니다.

통사론

 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() 함수는 생성된 동적 메모리를 해제하는 데 사용됩니다. 콜록 () 또는 malloc () 기능. 이렇게 할당된 메모리는 자신의 메모리로 해제될 수 없으며 프로그램이 끝날 때까지 존재합니다. 따라서 재사용할 수 있는 메모리를 해제하는 것은 우리의 책임이므로 명시적으로 free() 함수를 사용하여 메모리를 해제합니다.

통사론

 free (ptr); 

여기서 free()는 포인터 ptr 변수를 사용하여 할당된 메모리를 해제하는 함수입니다.

calloc() 함수를 사용하여 동적 메모리 할당을 생성한 다음 C 프로그램에서 free() 함수를 사용하여 점유 공간을 해제하는 것을 고려해 보겠습니다.

릴리스.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></=>