English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C에서 calloc()과 malloc()

calloc()

이 기능calloc()연속 위치를 나타냅니다. 그것의 작동 방식은 비슷하게malloc()하지만 여러 개의 동일한 크기의 메모리 블록을 할당합니다.

이것은calloc()C 언어의 문법

void *calloc(size_t number, size_t size);

여기서

할당될 배열의 요소 수- 。

크기-바이트 단위로 할당된 메모리 크기입니다.

이것은calloc()C 언어의 예제

예제

#include <stdio.h>
#include <stdlib.h>
int main() {
   int n = 4, i, *p, s = 0;
   p = (int*) calloc(n, sizeof(int));
   if(p == NULL) {
      printf("\n오류! 메모리가 할당되지 않았습니다.");
      exit(0);
   }
   printf("\n배열 요소를 입력하세요: ");
   for(i = 0; i < n; ++i) {
      scanf("%d", p + i);
      s += *(p + i);
   }
   printf("\n합계: %d", s);
   return 0;
}

출력 결과

배열 요소를 입력하세요: 2 24 35 12
합계: 73

위의 프로그램에서 메모리 블록은 할당됩니다calloc()。포인터 변수가 null이면 메모리 할당이 없습니다. 포인터 변수가 비어지지 않으면 사용자가 배열의 네 개의 요소를 입력해야 하며, 요소의 합을 계산해야 합니다.

p = (int*) calloc(n, sizeof(int));
if(p == NULL) {
   printf("\n오류! 메모리가 할당되지 않았습니다.");
   exit(0);
}
printf("\n배열 요소를 입력하세요: ");
for(i = 0; i < n; ++i) {
   scanf("%d", p + i);
   s += *(p + i);
}

malloc()

이 함수malloc()요청한 바이트 크기를 할당하고, 할당된 메모리의 첫 번째 바이트에 대한 포인터를 반환합니다. 실패하면 널 포인터를 반환합니다.

이것은malloc()C 언어의 문법

pointer_name = (cast-type*) malloc(size);

여기서

pointer_name-포인터에 어떤 이름을 주든지.

cast- type-그것을 할당된 메모리의 데이터 타입으로 강제 변환해야 합니다malloc()

크기-바이트 단위로 할당된 메모리 크기입니다.

이것은malloc()C 언어의 예제

예제

#include <stdio.h>
#include <stdlib.h>
int main() {
   int n = 4, i, *p, s = 0;
   p = (int*) malloc(n * sizeof(int));
   if(p == NULL) {
      printf("\n오류! 메모리가 할당되지 않았습니다.");
      exit(0);
   }
   printf("\n배열 요소를 입력하세요: ");
   for(i = 0; i < n; ++i) {
      scanf("%d", p + i);
      s += *(p + i);
   }
   printf("\n합계: %d", s);
   return 0;
}

이것은 출력입니다

출력 결과

배열 요소를 입력하세요: 32 23 21 8
합계: 84

위의 프로그램에서 네 개의 변수가 선언되었으며, 그 중 하나는 포인터 변수입니다* p, 그것은 malloc로 할당된 메모리를 저장합니다. 배열의 요소는 사용자가 인쇄하고 요소의 총 합을 인쇄합니다.

int n = 4, i, *p, s = 0;
p = (int*) malloc(n * sizeof(int));
if(p == NULL) {
   printf("\n오류! 메모리가 할당되지 않았습니다.");
   exit(0);
}
printf("\n배열 요소를 입력하세요: ");
for(i = 0; i < n; ++i) {
   scanf("%d", p + i);
   s += *(p + i);
}
printf("\n합계: %d", s);