차이 malloc 및 calloc

사이의 근본적인 차이 malloc 및 calloc 기능은 calloc()필요에 두 개의 인수를 대신 하나의 인수하는 데 필요에 의해 malloc(). 모두 malloc()및 calloc()함수는 C 프로그래밍 언어에서 제공하는 동적 메모리 할당 및 할당합니다.

이해하기 전에 malloc()및 calloc()함수는 먼저 우리에게 의미를 이해의 동적 메모리를 할당합니다. 메모리 할당은 프로그램 및 프로세스의 실행을 위해 컴퓨터 메모리를 할당하는 절차입니다. 우리는 프로그램 및 프로세스에 필요한 메모리 공간의 양을 미리 알 수 없을 때 동적 할당 기술을 사용합니다.

동적 메모리 할당으로 인해 발생한 문제와 관련된 정적 메모리 할당 같은 경우는 더 적은 요소가 저장된 다음의 나머지 부분에 메모리가 불필요하게 낭비되고 있습니다. 따라서 메모리가 필요할 때만 할당되는 정적 메모리 할당의 문제를 극복합니다.

내용: malloc()Vs calloc()

  1. 비교표
  2. 정의
  3. 주요 차이점
  4. 결론

비교표

기초의 비교 malloc() calloc()
No 의 블록 할당하도록 요구하는 메모리. 는 요청 된 메모리의 여러 블록을 할당합니다.나는 이것이 내가하는 일이 아니라는 것을 알고 있지만,내가하는 일은 내가 할 수있는 일이 아니라는 것이다.;
초기화 malloc()은 할당 된 메모리를 지우고 초기화하지 않습니다. 할당된 메모리는 calloc()을 사용하여 0 으로 초기화됩니다.
할당 방식 malloc()함수는 힙에서 크기’크기’의 메모리를 할당합니다. calloc()함수는 num*크기와 동일한 크기의 메모리를 할당합니다.
속도 빠른 비교적으로 느립니다.

의 정의 malloc()

malloc 기능을 할당하는 블록의 메모리 바이트 단위로 표시한 것입니다. 사용자는 명시 적으로 블록 크기를 제공해야합니다,그것은 사용을 위해 필요합니다.

통해 malloc 능 프로그램 요청 RAM 의 시스템에 대한 메모리 할당,을 요청할 경우 인정(즉,malloc 기능을 말한다에서 성공을 할당하는 메모리)는,그것은 포인터를 반환하는 첫 번째 블록의 메모리입니다. 그것은 포인터의 무효 유형을 반환,즉 포인터의 모든 유형을 할당 할 수 있음을 의미합니다.

비록 malloc 함수가 필요한 메모리 양을 할당 할 수없는 경우 NULL 을 반환합니다. Malloc 기능에 액세스할 수 있 TURBO C 헤더 파일의alloc.hstdlib.h<malloc.h>.

SYNTAX

의 구문은 이 기능은 다음과 같습니다:

malloc(number of elements * size of each element);

예를 들어,
int *ptr;
ptr=malloc(10*sizeof (int))

크기의 크기를 나타내는 데 필요한 메모리에서 바이트(즉,할당 될 연속적인 메모리 위치의 수).

만으로 언급하기 전에는 기능 malloc 무효를 반환한 포인터,결과적으로 캐스팅 연산자를 변경할 필요가 반환되는 포인터로 유형을 기반으로 우리의 필요에,위 선언을 제공할 수 있습은 다음과 같은 형식:

ptr_var=(type_cast* ) malloc (size)

여기서ptr_vartype_cast는 데이터 형식으로 반환되는 포인터(또는 유형의 무효)이 변형되는 것을,그리고 크기의 크기를 설명 할당된 메모리 블록 바이트 단위로 표시한 것입니다.

예를 들어

int *ptr;
ptr=(int*) malloc (10 * size of (int));

할당된 메모리에 의해 malloc 기능이 포함되 쓰레기 값입니다.

주는지 확인하는 경우 해당 요청에 의해 생성 malloc 메모리를 할당하여 시스템 RAM,또는 거부(경우에는 필요한 경우 공간은 사용할 수 없습니다). 우리는 필요한 양의 메모리가 할당되지 않은 속성을 사용할 수 있습니다 malloc 함수는 NULL 을 반환합니다.

의 정의 calloc()

calloc 기능을 운영하고 정확하게 같은 malloc 기능을 제외한다는 사실 그것은 두 개의 인수가 필요합로의 경우에는 malloc()하나만 인수가 필요합니다.예를 들어

:
int*ptr;
ptr = (int*)calloc(10,2);

여기에서 2 개의 크기를 지정 데이터 형식의 바이트는 우리는 할당을 만들 수 있는 이 경우 2 을 위해 정수입니다. 그리고 10 은 할당이 이루어질 요소의 수를 나타냅니다.

기억에 전달되는 인수 기능 malloc 었(n*10),그것은 하나의 인수 할 수 없이 혼란 때문에 여러 개의 인수를 항상 있는 쉼표로 구분됩니다. 인수(n*10)에는 그 사이에 쉼표가 없습니다. 따라서 그것은 단순한 것이 아니라 표현식이지만 단일 인수입니다.

반환을 위 선언은 다음의 실행 위의 문 메모리 블록은 20 개의 바이트는 할당을 요청하는 프로그램의 주소가 첫번째 블록 할당을 요청하는 프로그램의 주소가 첫번째 블록 할당 포인터 ptr.

calloc 함수에 의해 할당 된 메모리는 모든 0 을 보유합니다. 이 calloc 기능은 얻을 수 있는 헤더 파일에<stdlib.h><alloc.h>터보 C.

주요 차이점 malloc 및 calloc

주요 차이점 malloc 및 calloc 기능은 다음과 같습니다:

  1. 의 단일 블록 요구하는 메모리 할당 malloc 는 동안 여러 블록의 메모리 할당 calloc.
  2. malloc 함수는 할당 된 메모리를 지우고 초기화하지 않습니다. 그것은 쓰레기 값과 할당 된 메모리의 항목을 변경할 수 없습니다 포함되어 있습니다. 반면 calloc 은 할당 된 메모리를 0 으로 초기화합니다.
  3. malloc 은 calloc 에서 초기화의 추가 단계 요구 사항으로 인해 calloc 보다 빠르지 만 그 차이는 무시할 수 있습니다.
  4. 또 다른 차이는 이러한 두 가지는 calloc 는 malloc+작성 memset,작성 memset 할당하는 물리 메모리에서 페이지 하는 반면 malloc 만 할당하는 메모리에서 힙에서 가상 주소입니다.

결론

모두 malloc 및 calloc 함수를 사용한 메모리 할당하고 있는 자신의 특정 장점 및 단점은 다음과 같 malloc 은 빠르게 비교하여 calloc. 또한 malloc 은 calloc 이 메모리를 할당하고 메모리 영역을 0 으로 초기화하기 때문에 하나의 인수 만 걸리므로 사용하기가 더 쉽습니다. 그러나 변수 초기화가 더 중요 할 때 calloc 을 사용하는 것이 좋습니다.나는 이것을 할 수 없다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다