C 프로그래밍에서의 동적 메모리 할당

CBeginner
지금 연습하기

소개

C 프로그래밍에서 배열의 초기 크기를 미리 알 수 없는 경우가 있습니다. 이러한 경우, 필요할 때만 메모리를 할당하는 동적 메모리 할당 방법을 사용합니다. malloc()은 런타임 시 사용될 배열 또는 변수에 필요한 특정 양의 메모리를 할당하기 위해 C 프로그래밍에서 사용되는 함수입니다. 이 랩에서는 malloc()을 사용하여 동적으로 메모리를 할당한 다음, free()를 사용하여 메모리 공간을 해제하는 방법을 배우겠습니다.

참고: 코딩을 연습하고 gcc를 사용하여 컴파일하고 실행하는 방법을 배우려면 직접 ~/project/main.c 파일을 생성해야 합니다.

cd ~/project
## create main.c
touch main.c
## compile main.c
gcc main.c -o main
## run main
./main

필요한 헤더 파일 포함

이 단계에서는 프로그램에 필요한 헤더 파일을 포함합니다.

#include <stdio.h>
#include <stdlib.h>

main() 함수 정의

이 단계에서는 main() 함수를 정의합니다. 이 함수 내에서 프로그램에 필요한 변수를 선언합니다.

int main()
{
    int n, i, *ptr, sum = 0;

    printf("\nEnter number of elements: ");
    scanf("%d", &n);

malloc() 함수를 사용하여 동적으로 메모리 할당

이 단계에서는 malloc()을 사용하여 동적으로 메모리를 할당합니다. 할당할 메모리의 크기는 요소의 수와 sizeof() 연산자를 사용하여 각 요소의 크기를 곱하여 결정됩니다.

ptr = (int *) malloc(n * sizeof(int));

if(ptr == NULL)
{
    printf("\nError! Memory not allocated.");
    exit(0);
}

할당된 메모리에 값 저장

이 단계에서는 루프를 사용하여 할당된 메모리에 값을 저장합니다.

for(i = 0; i < n; i++)
{
    printf("\nEnter element %d: ", i + 1);
    scanf("%d", ptr + i);
    sum += *(ptr + i);
}

값 출력

이 단계에서는 저장된 값을 출력합니다.

printf("\nElements entered are: ");
for(i = 0; i < n; i++)
{
    printf("%d ", *(ptr + i));
}

메모리 해제

이 단계에서는 free() 함수를 사용하여 할당된 메모리를 해제합니다.

free(ptr);

요약

이 랩에서는 malloc()을 사용하여 동적으로 메모리를 할당하고 free()를 사용하여 메모리 공간을 해제하는 방법을 배웠습니다. main() 함수에서 변수를 선언하고 malloc()을 사용하여 메모리를 할당하는 방법을 배웠습니다. 또한 할당된 메모리 공간에 데이터를 저장하고, 저장된 값을 출력한 다음, free()를 사용하여 할당된 메모리를 해제하는 방법도 배웠습니다.