공hannah부
C - 배열 동적할당 본문
메모리의 동적할당이란?
프로그램 실행 시간동안 사용할 메모리 공간을 할당하는 것.
: 데이터 영역과 스택 영역에 할당되는 메모리의 크기는 컴파일 타임에 미리 결정되는데, 힙 영역의 크기는 프로그램이 실행되는 도중인 런 타임에 사용자가 직접 결정하게 된다. 이렇게 런 타임에 메모리를 할당받는 것을 메모리의 동적 할당(dynamic allocation)이라고 한다.
사용 함수
- malloc() : 이 함수는 프로그램이 실행 중일 때 사용자가 직접 힙 영역에 메모리를 할당할 수 있게 해준다
void *malloc(size_t size);
- free() : 이 함수는 힙 영역에 할당받은 메모리 공간을 다시 운영체제로 반환해주는 함수이다. malloc()함수를 사용해 메모리를 할당받아준 다음 더 이상 사용하지 않을 땐 명시적으로 메모리를 해제해 주어야 한다. 꼭꼭!!
void free(void*ptr);
- malloc(), free()함수는 모두 stdlib.h 라이브러리에서 가져온다.
#include<stdlib.h>
예제
-입력받은 정수(N)만큼 배열(arr)에 메모리를 할당하여 숫자 입력 받은 후 출력
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int n, num;
scanf("%d", &n);
int* arr = malloc(sizeof(int) * n); //입력받은 정수 n만큼 메모리 동적 할당
for (int i = 0; i < n; i++)
{
scanf("%d", &num);
arr[i] = num;
}
for (int i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
free(arr);//메모리 해제
}
'공부 > C언어' 카테고리의 다른 글
C - 배열 서로 다른 값 찾기 (0) | 2023.02.16 |
---|---|
C - 배열 빠진 숫자 찾기 (2) | 2023.02.14 |