티스토리 뷰

 

 

동적 메모리

# 동적 메모리 이해

1. 개요
동적메모리사진1 데이터의 개수를 미리 알 수 없을 때 사용
처리 대상 데이터가 유동적일 때, 특히 변동 폭이 큰 경우
2. 라이브러리 함수
1) 종류
- 헤더파일 stdlib.h
- 헤더파일 stdlib.h

2) malloc()
char* arr;
arr = malloc( 5 );

int* arr;
arr = (int *) malloc( 20 );

3) free()
int* arr;
arr = (int *) malloc( 5 );
free(arr);

4) calloc()
int* arr;
arr = (int *) calloc( 5 , 4 );

5) realloc()
int* arr;
arr = (int *) malloc( 8 );
arr = (int *)realloc(arr, 20)

# 동적 메모리 활용

1. 함수 기초

#include 
#include 
int main()
{
    char *a;
    int size;
    scanf(“%d”, &size);
    a = malloc( sizeof(char)*size );
    strcpy(a,“hi”);
    printf(“문자수 : %d 문자열 : \n”, strlen(a), a );
    free(a);

    return 0;
}

#include 
#include 
int main()
{
    int *a;
    int size;
    scanf(“%d”, &size);
    a = (int *) calloc( sizeof(int), size );
                    
    free(a)
    return 0;
}
2. 함수 활용
문자열을 입력받고 하나의 동적 메모리에 계속 붙여서 저장하는 프로그램을 작성하시오. (“end” 입력 시 입력 종료)

#include 
#include 
int main()
{
    char *a, str[20];
    a = (char *)calloc(1,1);

    if (a == NULL) printf(“Fail Allocation”);

    while(1){
        gets(str);

        if( !strcmp(str,“end”) ) break;

        a = (char *)realloc(a,strlen(str)+1);
        strcat(a,str);
    }

    printf(“\n%s”, a);
    free(a);

    return 0;
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함