프로그램 실행 중에 메모리 용량을 할당하고, 더이상 사용하지 않으면 해당 공간을 해제하는 것이 동적 메모리 할당이다.
(JAVA, Kotlin 등 상위레벨 언어는 Garbage Collector가 사용하지 않는 메모리를 알아서 해제하여 Managed Language라 부른다.)
malloc()
malloc() 함수(memory allocate 함수)는 인자로 지정한 크기의 메모리를 할당하면 해당 메모리 시작주소를, 실패하면 NULL포인터를 반환한다.
※ malloc() 함수는 할당된 메모리를 초기화하지 않는다는 점 주의하자
#include <stdlib.h>
void *malloc(size_t size);
size : 할당 할 메모리 크기
char *ptr;
ptr = malloc(sizeof(char) * 100);
malloc() 함수를 이용해 문자 100개의 메모리 공간을 할당하는 예
calloc()
calloc() 함수는 [배열 요소의 수] X [각 배열의 단위사이즈] 로 메모리 용량을 할당한다. calloc() 함수는 할당된 메모리를 0으로 초기화한다.
#include <stdlib.h>
void *calloc(size_t nmemb, size_t size);
nmemb : 배열 요소의 수, size : 배열 요소단위의 크기(byte)
char *ptr;
ptr = calloc(10, 20);
realloc()
realloc() 함수는 이미 할당한 메모리에 용량을 추가하여 할당할 때 사용한다. 기존에 할당한 메모리와 추가할 메모리를 더한 크기의 메모리를 새롭게 할당하여 주소를 반환한다. 이 때, 기존 메모리의 내용을 새로 할당된 메모리로 복사한다.
#include <stdlib.h>
void *realloc(void *ptr, size_t size)
ptr : 기존 메모리 주소 포인터, size : 할당할 메모리 크기
char *ptr, *new;
ptr = malloc(sizeof(char) * 100);
new = realloc(ptr, 100);
realloc() 함수를 이용해 문자 100개의 메모리 공간을 할당하는 예
메모리 해제 : free()
#include <stdlib.h>
void free(void *ptr);
'Fundamental of Software Develop > : : Linux System Programming' 카테고리의 다른 글
디렉터리 생성과 삭제 : mkdir(), rmdir() (0) | 2023.11.09 |
---|---|
명령행 인자(Command-Line Arguments) (0) | 2023.11.09 |
오류 처리 함수 : perror(), strerror() (0) | 2023.11.09 |
Linux : Build System (Makefile, CMake) (0) | 2023.11.09 |
시스템 호출의 오류 처리하기 (1) | 2023.11.09 |