프로그램 실행 도중에 운영체제로부터 메모리를 필요한 만큼만 할당받아 사용하고, 사용이 끝난 뒤 반환

프로세스의 데이터 섹션의 끝인 break 지점을 변경
→ 동적으로 할당한 메모리 영역의 크기를 조절 가능
#include <unistd.h>
int brk(EndDataSegment)
char *EndDataSegment;
#include <unistd.h> : brk 함수가 포함된 헤더 파일EndDataSegment : break로 지정하고 싶은 값 ( 프로세스의 최대 데이터 값 초과 X )return : 성공시 0, 실패시 -1 리턴프로세스의 데이터 섹션의 끝인 break 지점을 변경하고,
변경되기 이전의 break 주소 ( = 공간이 확장 됐다면, 새로 할당된 메모리의 시작점 )를 반환
→ 메모리를 동적으로 할당하거나, 해제할 때 사용
#include <unistd.h>
void *sbrk(Increment)
intptr_t Increment;
#include <unistd.h> : sbrk 함수가 포함된 헤더 파일Increment : 현재보다 확장하고 싶은 사이즈 ( 음수도 가능 )return : 성공시 0, 실패시 -1 리턴메모리를 동적으로 할당해주는 함수
#include <stdlib.h>
void* malloc(size_t size);
#include <stdlib.h> : malloc 함수가 포함된 헤더 파일size_t : 동적으로 할당할 메모리 크기return : 성공시 할당한 메모리의 첫번째 주소 리턴, 실패시 NULL 리턴해당 메모리를 더 이상 사용하지 않을 때, 시스템에 반환하는 함수
#include <stdlib.h>
void free(void *ptr);
#include <stdlib.h> : free 함수가 포함된 헤더 파일ptr : 해제하고자 하는 메모리의 포인터// --- > example < --- //
void main()
{
int* arr;
arr = (int*)malloc(sizeof(int) * 4); // 배열에 (int * 4)를 동적으로 할당
arr[0] = 100;
arr[1] = 200;
arr[2] = 300;
arr[3] = 400;
for (int i = 0; i < 4; i++) {
printf("arr[%d] : %d\n", i, arr[i]);
}
free(arr);