본문 바로가기
개념/혼자 공부하는 C언어

chapter 16) 동적 하랑한 저장 공간을 사용하는 프로그램

by kiseno 2024. 9. 23.
728x90
반응형
SMALL
#include <stdio.h>
#include <stdlib.h>

int main(void){
    int *pi;
    double *pd;

    pi = (int *)malloc(sizeof(int));
    if(pi == NULL){
        printf("not enough memory\n");
        exit(1);
    }
    pd = (double *)malloc(sizeof(double));

    *pi = 10, *pd = 3.4;

    printf("integer : %d\n", *pi);
    printf("double : %.1lf\n ", *pd);

    free(pi);
    free(pd);

    return 0;
}

 

### 코드 설명

- `int *pi;`와 `double *pd;`를 통해 정수형 포인터 `pi`와 실수형 포인터 `pd`를 선언합니다. 이 포인터들은 나중에 `malloc`을 사용하여 할당된 메모리를 가리키게 됩니다.

- `pi = (int *)malloc(sizeof(int));`는 정수형 변수 하나의 크기만큼의 메모리를 할당하고, 그 메모리의 주소를 `pi`에 저장합니다. 만약 메모리 할당이 실패하면(`pi == NULL`), 프로그램은 충분한 메모리가 없음을 알리는 메시지를 출력하고 종료됩니다.

- `pd = (double *)malloc(sizeof(double));`는 실수형 변수 하나의 크기만큼의 메모리를 할당하고, 그 메모리의 주소를 `pd`에 저장합니다. 이 코드는 메모리 할당 실패 시 처리를 하지 않습니다. 실제 사용에서는 할당 실패를 확인하고 적절히 처리하는 것이 좋습니다.

- `*pi = 10, *pd = 3.4;`를 통해 할당된 메모리에 각각 정수 10과 실수 3.4를 저장합니다.

- `printf("integer : %d\n", *pi);`와 `printf("double : %.1lf\n ", *pd);`를 사용하여 할당된 메모리에 저장된 값들을 출력합니다.

- `free(pi);`와 `free(pd);`를 통해 할당된 메모리를 해제합니다. 동적으로 할당된 메모리는 사용이 끝난 후 반드시 해제해야 합니다. 이는 메모리 누수를 방지하는 중요한 작업입니다.

728x90
반응형
LIST