티스토리 뷰

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




2) malloc()
char* arr;
arr = malloc( 5 );
int* arr;
arr = (int *) malloc( 20 );
arr = malloc( 5 );
int* arr;
arr = (int *) malloc( 20 );
3) free()
int* arr;
arr = (int *) malloc( 5 );
free(arr);
arr = (int *) malloc( 5 );
free(arr);
4) calloc()
int* arr;
arr = (int *) calloc( 5 , 4 );
arr = (int *) calloc( 5 , 4 );
5) realloc()
int* arr;
arr = (int *) malloc( 8 );
arr = (int *)realloc(arr, 20)
arr = (int *) malloc( 8 );
arr = (int *)realloc(arr, 20)
# 동적 메모리 활용
1. 함수 기초
2. 함수 활용
#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;
}
문자열을 입력받고 하나의 동적 메모리에 계속 붙여서 저장하는 프로그램을 작성하시오. (“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;
}
'JAVA기반스마트웹개발2021 > 프로그래밍언어 활용' 카테고리의 다른 글
| 도서관리 시스템 고도화(동적메모리) (0) | 2021.08.08 | 
|---|---|
| 함수 포인터 (0) | 2021.08.08 | 
| 도서관리 시스템 고도화(라이브러리 적용) (0) | 2021.08.08 | 
| 문자열 비교 검색 라이브러리 (0) | 2021.08.08 | 
| 문자 분류 데이터 변환 관련 라이브러리 (0) | 2021.08.07 | 
