Programming Language/C/C++

[C/C++] 동적 메모리 할당 malloc

깐요 2017. 2. 27. 11:24

동적 메모리 할당?

동적 메모리 할당(dynamic memory allocation)이란

프로그램이 실행 도중에 동적으로 메모리를 할당받는 것을 말한다


이와 반대로 정적 메모리 할당이란 개념도 있다

프로그램이 시작되기 전에 미리 정해진 크기의 메모리를 할당받는다

정적으로 할당받으면 메모리의 크기는 프로그램의 실행 도중에 크기가 변경될 수 없다

int number = 10; 과 같은 경우이다


동적 메모리 할당의 방법은 다음과 같다


#include <malloc.h>

int *pi;
pi = (int *)malloc(sizeof(int));

...

free(pi);

malloc.h 헤더파일을 지시문으로 불러오고

malloc(int size) 함수를 사용하여 size 바이트(위 경우 4 바이트) 만큼의 메모리 블록을 할당한다

새로운 메모리 블록의 시작 주소를 반환한다

적절한 타입(위 경우 int 형)의 포인터로 타입 변환시킨다

메모리 확보가 불가능하면 NULL을 반환한다


메모리 블록을 할당 받았으면 반드시 시스템에 반납해야 한다

이때 사용하는 함수가 free( ) 함수이다


mallic 말고도 calloc(int num, int size) 함수도 있다

배열 형식의 메모리를 할당하는데 요소들이 0 으로 초기화된다는 특징이 있다


위 코드에서의 sizeof 연산자는 변수나 타입의 크기를 숫자로 반환한다

그 크기의 단위는 바이트다

320x100

'Programming Language > C/C++' 카테고리의 다른 글

[C/C++] strlen 함수, 문자열의 길이  (0) 2017.04.20
[C/C++] fflush 함수  (0) 2017.03.10
[C/C++] 포인터 pointer  (0) 2017.02.26
[C/C++] 구조체 struct  (0) 2017.02.25
[C/C++] 순환, 재귀 호출  (0) 2017.02.19