KDONG
2021. 8. 7. 23:18
학습내용
- 동적 메모리 이해
- 동적 메모리 활용
학습목표
- 동적 메모리의 기본 개념을 파악하고 용도를 설명할 수 있다.
- 동적으로 메모리 할당이 필요한 작업에 적용할 수 있다.
동적 메모리 이해
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은 동적 메모리의 크기를 변경하여 할당하는 것이 가능함