본문으로 바로가기

바다야크

  1. Home
  2. 컴퓨터/프로그래밍
  3. C언어 malloc 함수 동적 메모리 할당

C언어 malloc 함수 동적 메모리 할당

· 댓글개 · 바다야크

C malloc() 동적 메모리 할당 함수

메모리를 동적으로 할당받습니다. 정적 메모리와 달리 동적 할당 메모리는 필요할 때 메모리를 생성하고 필요 없어지면 시스템에 반환할 수 있습니다. 메모리 또한 시스템의 리소스이므로 필요할 때 적절히 사용하는 것이 중요합니다.

반환 값이 void 타입인 이유는 바이트 한 개 크기의 char에서 int, long, 또는 구초체와 같은 다양한 크기와 형태의 변수 메모리를 할당 받은 포인터로 받을 수 있음을 의미합니다.

예로 변수를 char *ptr; 로 했다면,

ptr = ( char *) malloc( 50);

로 작성하고, 메모리의 포인터를 받을 변수를 int *ptr;로 선언하고, int 값을 50개 정도 저장할 수 있는 메모리를 구한다면,

ptr = ( int *)malloc( 50 * sizeof( int));

로 처리합니다.

  • 헤더: stdlib.h
  • 형태: void *malloc(size_t size)
  • 인수: size_t size 필요한 메모리 크기로 단위는 바이트
    void * 메모리가 할당된 포인터, 메모리 확보에 실패했다면 NULL을 반환
  • 반환: void * 메모리가 할당된 포인터, 메모리 확보에 실패했다면 NULL을 반환

C언어 malloc() 함수 예제

#include <stdio.h>
#include <stdlib.h>

int main( void)
{
   char  *ptr_char;
   int   *ptr_int;
   int    ndx;

   ptr_char  = (char *)malloc( 50);
   ptr_int   = (int  *)malloc( 50 * sizeof( int));

   for ( ndx= 0; ndx < 50; ndx++)
   {
      ptr_char[ndx]  = 'a';
      ptr_int[ndx]   = 2007 +ndx;
   }

   for ( ndx= 0; ndx < 50; ndx++)
   {
      printf( "%c %d\n", ptr_char[ndx], ptr_int[ndx]);
   }

   free( ptr_char);
   free( ptr_int );
   return 0;
}

C언어 malloc() 예제 실행 결과

]$ ./a.out
a 2007
a 2008
a 2009
a 2010

중략

a 2050
a 2051
a 2052
a 2053
a 2054
a 2055
a 2056

]$
SNS 공유하기
💬 댓글 개
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.