이번 시간엔 메모리 동적 할당에 대해서 알아보도록 하겠습니다! 바로 변수들에게 메모리를 사용자가 원하는 대로 공간을 할당해주고 그 공간을 소멸시킬 수 있는 함수입니다! 여기엔 malloc, calloc, realloc 함수가 존재하는데요 하나하나 알아보도록 하겠습니다!
malloc 함수
예를 들어 한 변수를 선언해 볼게요!
char *str = (char*)malloc(sizeof(char)*50);
이런 식으로 선언하는데요! 이 문장의 뜻은 이렇습니다! char형 포인터로 길이가 50인 문자 배열을 담을 수 있는 공간을 할당한다는 뜻이에요! 그리고 이런식으로
char* func (int n) {
char *str = (char*)malloc(sizeof(char)*50);
...
return str;
free(str);
}
함수를 선언하면 함수가 종료된 뒤에도 메모리 공간이 소멸되지 않기 때문에 유지될 수 있겠죠? 마지막에 free(str); 이거를 통해서 메모리 공간을 소멸 시킬 수 있어요!
calloc 함수
n = (int *)calloc(50, sizeof(int));
얘는 이렇게 써요 거의 비슷하게 생겼는데 인자가 두개죠? 바로 sizeof(int) 이 크기 50개를 할당해달라는 말이에요 그럼 총 200바이트를 할당받을 수 있겠죠? 그럼 저 malloc과는 다른 점이 뭘까요? 바로 malloc에서는 초기화 할때 쓰레기 값이 들어가지만 calloc에서는 0이 들어가요! 얘도 free(n);를 통해서 공간을 소멸시킬 수 있어요!
realloc 함수
마지막으로 realloc 함수! 얘도 예제를 통해 알아볼께요
char *str = (char*)malloc(sizeof(char)*5);
뭐 이런 게 있다고 치면
str = (char*)realloc(str, sizeof(char)*50);
이렇게 해서 길이가 50인 배열로 늘릴 수 있어요!!
모르는 것은 댓글이나 쪽지로 남겨주시면 성심 성의껏 답변해드리겠습니다!! 댓글, 공감, 구독(이웃추가)는 블로거에게 큰 힘이 됩니다! 부탁드리면서 이번 포스팅을 마치도록 하겠습니다! 지금까지 딘또였습니다.
'Develop > C' 카테고리의 다른 글
터미널을 더 예쁘게! iTerms2 개발환경 (0) | 2019.09.01 |
---|---|
20-3 C 언어 파일 위치 지시자 fseek ftell 예제 (1) | 2016.08.24 |
20-2 C 언어 파일의 입출력 심화(바이너리) 예제 (0) | 2016.08.21 |
20 C 언어 파일의 입출력 예제 (0) | 2016.08.18 |
19-4 C 언어의 구조체 변형 열거형 예제 (0) | 2016.08.17 |
댓글