본문 바로가기

컴퓨터/언어,프로그래밍

정적 메모리 할당 vs 동적 메모리 할당

정적 메모리 할당 (Static Memory Allocation)

저장하고자 하는 데이터의 메모리 공간이 얼마인지 명확하게 아는 경우에는 정적 메모리 할당을 사용한다.
예를 들어 이메일 주소를 저장하고자 할 경우 이메일 주소는 아무리 길어도 256 이상이 되지는 않을 것이므로
이메일 주소를 저장하기에 충분한 메모리 공간을 미리 할당해서 사용한다. (물론, 적당한 크기를 할당해야 한다.)

ex) char email[256];

정적 메모리 할당의 경우 고정된 메모리 공간을 할당하므로 메모리 낭비가 있을 수 있다. 그러나, 동적 메모리 할당으로
발생하는 여러 문제점들을 고려하지 않아도 된다는 장점이 있다. 얼마만큼의 메모리 공간이 필요한지 알 수 있다면
약간의 메모리 낭비는 있지만, 정적 메모리 할당을 사용하는 것이 동적 메모리 할당보다 사용하기도 쉽고, 버그도
더 적을 것이다.

동적 메모리 할당 (Dynamic Memory Allocation)

동적 메모리 할당이란 미리 고정 크기의 메모리를 할당해 두는 것이 아니라 프로그램 실행중에 동적으로 메모리를
할당하고 사용하는 것이다.



메모리를 사용하려면 메모리 공간을 할당해야 한다.

잘못된 경우
-------------------------------------------------------------
char *ch;

memcpy(ch, buf, 100);
-------------------------------------------------------------

올바른 경우
-------------------------------------------------------------
char *ch;
ch = (char *)malloc(100);
memcpy(ch, buf, 100);
-------------------------------------------------------------


malloc(), realloc(), sizeof(), free() 찾아볼 것.
제주삼다수, 2L,... 오뚜기 진라면 매운... 상하목장 유기농 흰... 남양 프렌치카페 카... 고려인삼유통 홍삼 ... 종근당건강 오메가3... 요이치 카링 유무선...