동적 메모리와 전처리예제
1. 동적 메모리 (Dynamic Memory)
C 프로그래밍에서 메모리 할당은 크게 정적 할당과 동적 할당으로 나뉩니다.
1.1. 메모리 할당 방법
-
정적 할당 (Static Allocation)
-
프로그램 시작 전에 메모리의 크기 결정
-
예시:
int test[10] = {0};
-
-
동적 할당 (Dynamic Allocation)
-
프로그램 실행 도중에 동적으로 메모리 할당
-
할당된 메모리는 사용 후 반드시 반납해야 함
-
예시:
int *pt = (int *)malloc(10 * sizeof(int));
free(pt);
-
1.2. 동적 메모리 할당 과정
#include <stdlib.h>
헤더 파일 추가- 자료형이 일치하는 포인터 변수 선언 (ex.
int *pt;
) - 필요한 메모리 크기 설정
- 메모리 할당 함수 사용 (
malloc
,calloc
,realloc
등) - 할당된 메모리는 포인터/배열처럼 사용
- 사용 후 반드시
free()
로 반납
예시:
int *pt; // 포인터 변수 선언
pt = (int *)malloc(10 * sizeof(int)); // 메모리 할당
free(pt); // 메모리 반납
1.3. 동적 메모리 접근 방법
-
포인터 변수 및 간접 참조 연산자 사용
*pt = 1;
*(pt + 1) = 2; -
배열 인덱스 사용
pt[8] = 9;
pt[9] = 10;
1.4. 동적 메모리 할당 함수
함수 | 설명 | 특징/예시 |
---|---|---|
malloc | 지정한 크기만큼 메모리 할당 | 초기값: 쓰레기값. 예시: int *i = (int *)malloc(10 * sizeof(int)); |
calloc | 지정한 크기만큼 메모리 할당 | 초기값: 0. 예시: int *i = (int *)calloc(10, sizeof(int)); |
realloc | 이미 할당된 메모리 크기 변경 | 예시: i = (int *)realloc(i, 100 * sizeof(int)); |
NULL | 메모리 할당 실패 시 반환 | 할당 실패 여부 확인 |
1.5. 동적 메모리 반납
- 할당된 동적 메모리는 사용이 끝난 후 반드시
free()
함수로 반납해야 합니다.
free(pt);