학습내용

  • 동적 메모리 이해
  • 동적 메모리 활용

학습목표

  • 동적 메모리의 기본 개념을 파악하고 용도를 설명할 수 있다.
  • 동적으로 메모리 할당이 필요한 작업에 적용할 수 있다.

 

동적 메모리 이해

1. 개요

특징 정적 메모리 동적 메모리
메모리 할당 컴파일 시간에 이루어 짐 실행 시간에 이루어 짐
메모리 해제 자동으로 해제 명시적으로 해제
사용 범위 지역변수는 선언된 블록 내, 전역변수는 프로그램 전체에서 사용할 수 있음 프로그래머가 원하는 동안만큼 사용할 수 있음
메모리 관리 컴파일러의 책임 프로그래머의 책임

 1) 데이터의 개수를 미리 알 수 없을 때 사용

 2) 처리 대상 데이터가 유동적일 때, 특히 변동 폭이 큰 경우

 

2. 라이브러리 함수

 1. 종류

  1) 헤더파일 stdlib.h

함수 void * malloc (size_t size);
설명 * 실핼 시 메모리를 할당(초기화 없음)
* size : 할당 크기
반환 * 할당된 메모리 포인터를 반환
* 할당 실패 시 null을 반환
함수 void * calloc (size_t num, size_t size);
설명 * 실핼 시 메모리를 할당(초기화 0)
* num : 개수
* size : 기본크기
반환 * 할당된 메모리 포인터를 반환
* 할당 실패 시 null을 반환
함수 void * realloc (void * ptr, size_t size);
설명 * 할당된 메모리의 크기를 변경
* ptr : 재할당 메모리 포인터
* size : 재할당 크기
반환 * 재할당된 메모리 포인터를 반환
* 할당 실패 시 null을 반환
함수 void free(void * ptr);
설명 * 할당된 메모리를 해제
* ptr : 해제할 메모리 포인터
반환 * none

 

  2) malloc( )

 

  3) free( )

  4) calloc( )

 

 5) realloc( )

 

동적 메모리 활용

1. 함수 기초

 

2. 함수 활용

 

 

학습정리

 

1. 동적 메모리 이해

  • 동적 할당은 실행 시에 할당되는 메모리임
  • 동적 할당은 힙 영역에 할당함
  • 동적 할당은 실행 시 크기가 정해지는 데이터 처리에 효과적임
  • 동적 할당된 공간은 프로그래머가 해제해야 함

 

2. 동적 메모리 활용

  • malloc, calloc은 동적으로 메모리를 할당하는 라이브러리 함수임
  • calloc은 동적 할당 후 0으로 초기화
  • free는 동적 할당된 메모리를 해제함
  • realloc은 동적 메모리의 크기를 변경하여 할당하는 것이 가능함