포인터를 사용해서 변수의 메모리 주소를 저장해왔다.
그렇다면 포인터에 원하는 만큼 메모리 공간을 할당해 주는 방법은 없을까?
malloc와 free를 사용하면 메모리에 원하는 만큼 공간을 할당 받을 수 있다.
malloc? free? 이게 무슨 말일까?
malloc는 "memory allocation"으로 메모리 할당이라는 함수이다.
free는 할당해주었던 것을 끝내는 함수이다.
직접 코딩해보자.
- #include <stdlib.h>는 malloc, free 함수가 선언된 헤더 파일이다.
- numPtr2 포인터는 malloc(sizeof(int))로 동적 메모리 할당을 해주는 부분이다. sizeof 연산자를 사용하면 int의 크기 만큼 할당 해줄 수 있다.
- %p numPtr1, numPtr2로 할당된 메모리 주소를 출력한다.
- free(numPtr2)는 free 함수를 사용해 해당 포인터 numPtr2 동적 메모리 해제를 하는 부분이다.
* 동적 메모리 할당을 했다면 반드시 free로 해제 해줘야한다.
결과는
그렇다면 동적으로 할당한 메모리에 값을 저장하려면 어떻게 해야할까?
아주 쉽다.
int *numPtr2; // int형 포인터 선언
numPtr2 = malloc(sizeof(int)); // int의 크기 4바이트만큼 동적 메모리 할당
*numPtr2 = 10; // 포인터를 역참조한 뒤 값 할당
printf("%d\n", *numPtr2); // 10: 포인터를 역참조하여 메모리에 저장된 값 출력
free(numPtr2);
- 먼저 malloc 함수로 동적 메모리 할당을 해준 뒤
- 포인터에 역참조로 값을 할당 해주면 된다.
'프로그래밍 > C 기본문법' 카테고리의 다른 글
UNIT 34.6 이중 포인터 사용하기 (0) | 2021.03.08 |
---|---|
UNIT34.2 역참조 연산자 (0) | 2021.03.08 |
UNIT 34. 포인터 사용하기 (0) | 2021.03.07 |
UNIT 10. 상수 사용하기(수정중) (2) | 2021.02.21 |
UNIT 9. 문자 자료형 사용하기 (0) | 2021.02.20 |