C 언어
malloc과 calloc의 차이점을 배우기 전에 먼저 알아봅시다-
동적 메모리 할당은 런타임에 메모리를 할당하는 프로세스입니다. 프로그램 실행 중에 메모리를 할당하고 해제하는 데 사용할 수 있는 calloc(), free(), realloc() 및 malloc()의 4가지 라이브러리 루틴이 있습니다. 이러한 루틴은 stdlib.h라는 헤더 파일에 정의되어 있습니다.
메모리 블록을 동적으로 할당하는 데 사용되는 함수입니다. 지정된 크기의 메모리 공간을 예약하고 메모리 위치를 가리키는 널 포인터를 반환합니다.
반환된 포인터는 일반적으로 void 유형입니다. 그것은 우리가 모든 포인터에 malloc 함수를 할당할 수 있다는 것을 의미합니다. malloc의 완전한 형태는 메모리 할당입니다.
이 자습서에서는 다음을 배우게 됩니다.
Calloc() 함수는 여러 메모리 블록을 할당하는 데 사용됩니다. 배열, 구조체와 같은 복잡한 데이터 구조에 메모리를 할당하는 데 사용되는 동적 메모리 할당 기능입니다. 이 함수가 지정된 대로 충분한 공간을 할당하지 못하면 null 포인터를 반환합니다. calloc 함수의 완전한 형태는 연속 할당입니다.
다음은 malloc()을 사용하는 이유입니다.
다음은 calloc()을 사용하는 이유입니다.
다음은 malloc()의 구문입니다.
ptr = (cast_type *) malloc (byte_size);
위 구문에서 ptr은 cast_type의 포인터입니다. malloc 함수는 할당된 byte_size 메모리에 대한 포인터를 반환합니다.
Example: ptr = (int *) malloc (50)
이 명령문이 성공적으로 실행되면 50바이트의 메모리 공간이 예약됩니다. 예약된 공간의 첫 번째 바이트 주소는 int 유형의 포인터 "ptr"에 할당됩니다.
다음은 malloc()의 구문입니다.
ptr = (cast_type *) calloc (n, size);
위의 구문은 동일한 크기의 n개의 메모리 블록을 할당하는 데 사용됩니다. 메모리 공간이 할당된 후 모든 바이트는 0으로 초기화됩니다. 현재 할당된 메모리 공간의 첫 번째 바이트에 있는 포인터를 반환합니다.
다음 코드에서 sizeof(*ptr)는 15개 정수의 메모리 블록을 할당하는 데 사용됩니다. printf 문에서 6번째 정수의 값을 찾고 있습니다.
#include<stdlib.h> #include<stdio.h> int main(){ int *ptr; ptr = malloc(15 * sizeof(*ptr)); if (ptr != NULL) { *(ptr + 5) = 480; printf("Value of the 6th integer is %d",*(ptr + 5)); } }
출력:
6번째 정수의 값은 480입니다.
아래의 C 언어 프로그램은 처음 10개 항의 합을 계산합니다. 포인터 값이 null이면 메모리 공간이 할당되지 않습니다.
For 루프는 변수 "i"의 값을 반복하고 합계를 인쇄하는 데 사용됩니다. 마지막으로 free 함수는 포인터를 해제하는 데 사용됩니다.
#include <stdio.h> #include <stdlib.h> int main() { int i, * ptr, sum = 0; ptr = calloc(10, sizeof(int)); if (ptr == NULL) { printf("Error! memory not allocated."); exit(0); } printf("Building and calculating the sequence sum of the first 10 terms \n"); for (i = 0; i < 10; ++i) { * (ptr + i) = i; sum += * (ptr + i); } printf("Sum = %d", sum); free(ptr); return 0; }
출력:
처음 10개 항의 시퀀스 합 작성 및 계산 n Sum =45
다음은 malloc()과 calloc()의 중요한 차이점입니다.
malloc() calloc() Malloc() 함수는 사용자가 지정한 크기의 단일 메모리 블록을 생성합니다. Calloc() 함수는 변수에 대해 여러 메모리 블록을 할당할 수 있습니다.Malloc 함수에는 가비지 값이 포함되어 있습니다. calloc 함수에 의해 할당된 메모리 블록은 항상 다음으로 초기화됩니다. 0.인수 개수는 1입니다.인수 개수는 2입니다.Calloc은 malloc보다 느립니다.Malloc은 calloc보다 빠릅니다. ().시간 효율이 malloc()보다 낮습니다.Malloc() 함수는 시작 주소만 반환하고 0으로 만들지 않습니다. 주소를 할당하기 전에 Calloc() 함수는 시작 주소를 반환하고 0으로 만듭니다. 초기화를 수행하지 않습니다. 메모리 초기화를 수행합니다.C 언어
malloc과 calloc의 차이점을 배우기 전에 먼저 알아봅시다- 동적 메모리 할당이란 무엇입니까? 동적 메모리 할당은 런타임에 메모리를 할당하는 프로세스입니다. 프로그램 실행 중에 메모리를 할당하고 해제하는 데 사용할 수 있는 calloc(), free(), realloc() 및 malloc()의 4가지 라이브러리 루틴이 있습니다. 이러한 루틴은 stdlib.h라는 헤더 파일에 정의되어 있습니다. malloc()이란 무엇입니까? 메모리 블록을 동적으로 할당하는 데 사용되는 함수입니다. 지정된 크기의 메모리 공간을 예약하고 메
자바란 무엇입니까? Java는 1995년 Sun Microsystem에서 출시되었습니다. James Gosling이 개발했습니다. 개발자가 한 번 실행하면 어디에서나 작성할 수 있도록 하는 특정 목표로 설계된 범용 프로그래밍 언어입니다. Java 애플리케이션은 Java Virtual Machine 또는 JVM의 모든 구현에서 실행할 수 있는 바이트코드로 컴파일됩니다. 이 튜토리얼에서는 다음에 대해 자세히 알아볼 것입니다. C#이란 무엇입니까 자바의 역사 C#의 역사 자바의 특징 C#의 특징 자바 대 C# Java 사