동적 메모리 할당을 사용한 배열 예제
추천 자료: ASP.NET Core 인증 및 권한 부여
동적 메모리 할당은 프로그램 실행 중에 메모리를 할당하거나 해제하는 기능을 제공합니다. 이를 통해 프로그램이 실행되는 동안 필요한 메모리만 사용하도록 할 수 있습니다. C 언어에서는 malloc
함수를 사용하여 동적 메모리를 할당할 수 있습니다. 이 예제에서는 동적 메모리 할당을 사용하여 사용자가 입력한 크기의 정수 배열을 생성하고, 배열 요소의 합계를 계산하는 방법을 설명합니다.
코드: dynamic_memory_allocation.c
아래의 코드는 사용자로부터 입력받은 배열 크기에 따라 동적 메모리를 할당하여 정수 배열을 생성하고, 배열 요소의 합계를 출력하는 프로그램입니다.
#define _CRT_SECURE_NO_WARNINGS // Visual Studio에서 안전하지 않은 함수 경고를 무시하도록 함
#include <stdio.h> // 입출력 관련 표준 라이브러리
#include <stdlib.h> // 메모리 동적 할당 관련 라이브러리
int main(void)
{
int n, sum = 0; // n은 배열 크기, sum은 배열 요소의 합계 저장
int* arr; // 정수 배열을 가리킬 포인터 선언
printf("배열의 크기를 입력하세요: "); // 사용자에게 배열 크기 입력 요청
scanf("%d", &n); // 배열 크기 입력받음
arr = (int*)malloc(n * sizeof(int)); // n개의 정수 배열에 동적 메모리 할당
// 메모리 할당에 실패한 경우 에러 메시지 출력 후 프로그램 종료
if (arr == NULL)
{
printf("메모리 할당 실패\n");
return 1;
}
printf("%d개의 정수를 입력하세요:\n", n); // 사용자에게 n개의 정수 입력 요청
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i]); // 정수 입력받아 배열에 저장
sum += arr[i]; // 입력받은 정수를 sum에 누적
}
printf("합계: %d\n", sum); // 배열 요소의 합계 출력
free(arr); // 동적 할당 받은 메모리 해제
return 0; // 프로그램 정상 종료
}
코드 설명
_CRT_SECURE_NO_WARNINGS
매크로를 정의하여 Visual Studio에서 사용되는 안전하지 않은 함수 경고를 무시하도록 설정합니다.stdio.h
헤더를 포함하여 입출력 관련 함수를 사용할 수 있도록 하고,stdlib.h
헤더를 포함하여 메모리 동적 할당 관련 함수를 사용할 수 있도록 합니다.main
함수에서 배열 크기n
과 합계를 저장할sum
변수를 선언하고, 정수 배열을 가리킬 포인터arr
를 선언합니다.- 사용자로부터 배열 크기를 입력받고,
malloc
함수를 사용하여 동적 메모리를 할당합니다. 메모리 할당에 실패한 경우, 에러 메시지를 출력하고 프로그램을 종료합니다. - 사용자로부터
n
개의 정수를 입력받아 배열에 저장하고, 배열 요소의 합계를 계산합니다. - 배열 요소의 합계를 출력하고,
free
함수를 사용하여 동적 할당 받은 메모리를 해제합니다.
예제 출력
다음은 프로그램이 실행되었을 때의 예제 출력입니다.
배열의 크기를 입력하세요: 3
3개의 정수를 입력하세요:
1
2
3
합계: 6
이 예제를 통해 동적 메모리 할당을 사용하여 사용자가 입력한 크기에 맞는 배열을 생성하고, 배열 요소의 합계를 계산하는 방법을 확인하였습니다. 이를 사용하면 프로그램의 메모리 사용 효율을 높일 수 있습니다.
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!