1. 동적 메모리 할당의 개념
프로그램 실행 중에 필요한 만큼 메모리를 확보하여 사용하는 것을 메모리 할당이라고 한다.
또 사용이 끝나면 메모리를 반납하는 것을 메모리 해제라고 한다.
이렇게 메모리를 할당받는 방법에는 크게 정적과 동적의 두 가지가 있다.
1 ) 정적 메모리 할당
정적 메모리 할당은 프로그램이 시작되기 전에 미리 정해진 크기의 메모리를 할당받는 것을 말한다.
프로그램 시작전에 메모리 크기를 아는 경우 사용하며 프로그램 실행 중에 크기가 변경될 수 없다.
ex )
1
2
3
4
5
6
7 |
#include<stdio.h>
int main(){
int a[10];
} |
cs |
2 ) 동적 메모리 할당
동적 메모리 할당은 프로그램 실행 중에 메모리를 할당받는 것을 말한다.
필요한 만큼의 메모리를 할당받아 사용할 수 있으며 사용이 끝나면 메모리를 반납해야된다.
-> 매우 효율적
동적 메모리 할당과 해제를 하기위해 사용하는 함수는 크게 3개다.
malloc(int size) : 메모리 할당
free(void *ptr) : 메모리 할당 해제
sizeof(var) : 변수난 타입의 크기 반환
ex)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 |
#include<stdio.h>
#include<malloc.h>
int main(){
int *ipt;
int i;
ipt = (int *)malloc(sizeof(int));
*ipt = 123;
printf("*ipt = %d, %u \n", *ipt, ipt);
free(ipt);
ipt = (int *)malloc(sizeof(int)*5);
for(i=0;i<5;i++){
ipt[i] = i+1;
printf("ipt + %d = %u, %d\n", i, ipt+i, ipt[i]);
}
free(ipt);
} |
cs |
'컴퓨터 과학 > 자료구조' 카테고리의 다른 글
[컴퓨터 과학 총론] 컴퓨터 과학 총론 (0) | 2021.03.12 |
---|---|
[자료구조] 5.포인터 (1) | 2018.12.12 |
[자료구조] 4.구조체 (0) | 2018.12.11 |
[자료구조] 3.배열 (0) | 2018.12.11 |
[자료구조] 2. 순환 (1) | 2018.11.29 |