동적 메모리 할당의 개념

- 일반적으로 C언어에서 배열의 경우 사전에 적절한 크기만큼 할당해주어야한다.

- 우리가 원하는 만큼만 메모리를 할당해서 사용하고자 한다면 동적 메모리 할당을 사용한다.

- 동적이라는 말의 의미는 '프로그램 실행 도중에'라는 뜻이다.


동적 메모리 할당 함수

- C언어에서는 malloc() 함수를 이용해 원하는 만큼의 메모리 공간을 확보할 수 있다.

- malloc() 함수는 메모리 할당에 성공하면 주소를 반환하고, 그렇지않으면 null을 반환한다.

- malloc() 함수는 <stdlib.h> 라이브러이에 정의되어 있다.

- 사용법 : malloc(할당할 바이트 크기);


실습내용

실습결과



동적 메모리 할당을 수행할 때마다 할당되는 포인터의 주소값은 변칙적이다.


동적으로 할당된 변수는 <힙 영역>에 저장된다.

지역변수,매개변수는 <스택 영역>에 저장된다.


전통적인 C언어에서는 스택에 선언된 변수는 따로 메모리 해제를 해주지않아도 된다.

반면에 동적으로 할당된 변수(힙영역)는 반드시 free() 함수로 메모리 해제를 해주어야한다.

메모리 해제를 하지 않으면 메모리 내의 프로세스 무게가 더해져 언제가는 오류가 발생한다.

메모리 누수(Memory Leak) 방지는 코어 개발자의 핵심 역량이다.


실습내용

실습결과



동적으로 문자열 처리하기

- 일괄적인 범위의 메모리를 모두 특정한 값으로 설정하기 위해서는 memset()을 사용한다.

- 사용법 : memset(포인터,값,크기); 

- 한 바이트 씩 값을 저장하므로 문자열 배열의 처리 방식과 흡사하다.

- 따라서 memset() 함수는 <string.h> 라이브러리에 선언되어 있다.


실습내용

실급결과



동적 메모리 할당을 이용해 프로그램이 실행중인 도중에 메모리 공간을 배정받을 수 있다.

동적으로 할당 받은 프로그램은 반드시 명시적으로 free() 함수를 이용해 할당 해제를 해야만한다.

+ Recent posts