Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C 프로그래밍에서 동적 메모리 할당이란 무엇을 의미합니까?

<시간/>

동적 메모리 할당

  • 실행 시(런타임) 메모리 할당을 동적 메모리 할당이라고 합니다.

  • calloc() 및 malloc() 함수는 동적 메모리 할당을 지원합니다.

  • 메모리 공간의 동적 할당은 함수에 의해 값이 반환되고 포인터 변수에 할당될 때 이러한 함수를 사용하여 수행됩니다.

  • 이 경우 프로그램 단위가 활성화된 경우에만 변수가 할당됩니다.

  • 동적 할당을 구현하기 위해 힙이라는 데이터 구조를 사용합니다.

  • 메모리 재사용이 가능하며 필요하지 않을 때 메모리를 해제할 수 있습니다.

  • 더 효율적입니다.

  • 이 메모리 할당 방식에서 실행은 정적 메모리 할당보다 느립니다.

  • 여기서 메모리는 프로그램 중 언제든지 해제될 수 있습니다.

예시

다음 프로그램은 동적 메모리 할당 함수를 사용하여 요소 집합에서 짝수와 홀수의 합을 계산합니다. -

#include<stdio.h>
#include<stdlib.h>
void main(){
   //Declaring variables, pointers//
   int i,n;
   int *p;
   int even=0,odd=0;
   //Declaring base address p using malloc//
   p=(int *)malloc(n*sizeof(int));
   //Reading number of elements//
   printf("Enter the number of elements : ");
   scanf("%d",&n);
   /*Printing O/p -
   We have to use if statement because we have to check if memory
   has been successfully allocated/reserved or not*/
   if (p==NULL){
      printf("Memory not available");
      exit(0);
   }
   //Storing elements into location using for loop//
   printf("The elements are : \n");
   for(i=0;i<n;i++){
      scanf("%d",p+i);
   }
   for(i=0;i<n;i++){
      if(*(p+i)%2==0){
         even=even+*(p+i);
      }
      else{
         odd=odd+*(p+i);
      }
   }
   printf("The sum of even numbers is : %d\n",even);
   printf("The sum of odd numbers is : %d\n",odd);
}

출력

Enter the number of elements : 4
The elements are :
35
24
46
12
The sum of even numbers is : 82
The sum of odd numbers is : 35