동적 메모리 할당이란?
- 프로그램 수행중에 필요한 크기의 메모리를 할당받아 사용하는 것을 동적 메모리 할당이라고 한다.
- malloc() 함수로 메모리를 할당받고, 사용이 끝난 메모리는 free()함수로 해제한다.
- 동적 할당 메모리는 RAM 내의 heap영역에 할당된다.
- 동적 할당 메모리는 이름이 없고 메모리의 주소만 가진다.
- 동적할당 메모리는 할당시 부터 해제시까지 전체 프로그램에서 유효하며, 해제를 따로 하지 않았을 떄에는 main 함수가 끝날때 해제된다.
- 장점 ) 프로그램의 사용중에 프로그래머가 원하는 만큼 데이터를 확보/제거하며 유동적으로 데이터를 관리할 수 있다.
malloc, free 예시

- malloc함수는 할당하고자하는 메모리의 크기를 입력받아 메모리를 할당한다. 할당에 성공 시 할당된 기억공간의 시작 주소를 반환하고, 실패 시 0번지 NULL을 반환한다.
- free함수에서는 내가 해제하고 싶은 기억공간의 주소를 받는다
변수 1개의 동적 메모리 할당
#include<stdio.h>//printf, scanf 함수 등 가져와
#include<stdlib.h>//동적메모리 할당 함수 등 가져와
int main(){
double *dp; //나는 double 자료공간을 가리키는 포인터변수야 동적메모리를 가리키는 포인터 변수는 전역변수로 선언되어 stack에 할당
dp = (double*)malloc(sizeof(double)); //동적 메모리할당 함수 선언부
if(dp!=NULL){
*dp = 4.5; //동적메모리 할당한 기억공간에 4.5저장
printf("*dp = %.2lf\n ", *dp);//동적메모리 할당한 기억공간에 실수값을 입력받음
scanf("%lf", dp); //동적메모리 할당한 기억공간에 실수값을 입력받음
printf("*dp = %.2lf\n", *dp);
free(dp); //동적메모리 할당한 기억공간을 반납하여 미예약 영역으로 되돌림
dp = NULL;
}
}
'C언어' 카테고리의 다른 글
06. C언어_포인터 변수 연산자, 주소 연산자 (0) | 2024.05.15 |
---|---|
01. C언어_컴퓨터의 메모리 구조 (0) | 2024.05.15 |
04. C언어_동적 메모리 할당 (2차원 배열) (0) | 2024.05.15 |
05. C언어_문자열(String) 관련 function (0) | 2024.05.15 |
07. C언어_퀵 정렬 (Quick sort) (0) | 2024.05.15 |