[c언어] 동적 메모리 할당을 위한 특수 데이터 형식의 활용 방법

C언어에서 프로그램이 실행 중에 메모리를 동적으로 할당하려면 malloc() 또는 calloc() 함수를 사용해야 합니다. 이때 할당된 메모리를 관리하기 위해 포인터와 다양한 데이터 형식을 적절하게 활용해야 합니다. 여기에서는 이러한 동적 메모리 할당을 위한 특수 데이터 형식의 활용 방법에 대해 살펴보겠습니다.

포인터

포인터는 동적 메모리 할당을 위해 꼭 필요한 데이터 형식입니다. 메모리 할당된 데이터에 접근하려면 할당된 메모리의 주소를 저장하고 있는 포인터를 사용해야 합니다.

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

위 예제에서 ptrmalloc() 함수를 사용하여 int 형의 데이터에 대한 메모리를 할당하기 위한 포인터입니다.

구조체

구조체를 활용하면 여러 데이터 형식을 하나의 묶음으로 관리할 수 있습니다. 동적 메모리 할당의 경우, 구조체를 정의하고 해당 구조체를 사용하여 메모리를 할당할 수 있습니다.

struct Person {
    char name[50];
    int age;
};

struct Person *personPtr;
personPtr = (struct Person *)malloc(sizeof(struct Person));

위 예제에서 Person 구조체를 정의하고, malloc() 함수를 사용하여 Person 형의 데이터에 대한 메모리를 할당하고 해당 메모리의 주소를 personPtr 포인터에 저장합니다.

유니언

유니언은 여러 데이터 형식을 하나의 메모리 공간에 저장할 수 있게 해줍니다. 이러한 특성을 사용하여 동적 메모리 할당 시 메모리를 효율적으로 사용할 수 있습니다.

union Data {
    int i;
    float f;
    char str[20];
};

union Data *dataPtr;
dataPtr = (union Data *)malloc(sizeof(union Data));

위 예제에서 Data 유니언을 정의하고, malloc() 함수를 사용하여 Data 형의 데이터에 대한 메모리를 할당하고 해당 메모리의 주소를 dataPtr 포인터에 저장합니다.

이처럼 포인터, 구조체, 유니언을 활용하여 동적 메모리 할당을 하는 방법은 C언어 프로그래밍에서 매우 중요합니다. 올바르게 이해하고 활용할 수 있도록 학습하는 것이 중요합니다.