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