Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

공hannah부

C - 배열 동적할당 본문

공부/C언어

C - 배열 동적할당

Hannah0226 2023. 2. 14. 00:12
메모리의 동적할당이란?

프로그램 실행 시간동안 사용할 메모리 공간을 할당하는 것.

: 데이터 영역과 스택 영역에 할당되는 메모리의 크기는 컴파일 타임에 미리 결정되는데,  영역의 크기는 프로그램이 실행되는 도중인 런 타임에 사용자가 직접 결정하게 된다. 이렇게 런 타임에 메모리를 할당받는 것을 메모리의 동적 할당(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