* 저도 잘알못이라 틀릴수있으니 혹시틀렷다면 누가 시비걸어주샘
malloc함수
0보다 큰 하나의 숫자를 입력받음
-> 숫자크기만큼 바이트단위로 힙영역 메모리할당
-> 할당된 메모리 공간의 주소값 반환
(실패시 NULL반환)
-------------------
문제는 malloc함수는 주소값만 뱉고 포인터형을 결정하진 못함
포인터형이 결정안된 주소값만 반환한다구
이때문에 void형 포인터 (void*)를 쓰는데
말만 포인터지 주소값만있고 형태가 없는거지
------------------------
void *vPtr = malloc(sizeof(int));
int * iPtr = (int*)vPtr; // void형 포인터를 int형 포인터로 바꾸고있음
*iPtr = 10; // int형포인터를 이용해서 할당한 힙영역에 10을 저장함
따라서 할당된 힙영역에
숫자 10이 int형태로 저장이되는거지
----------------------------
결론
이 void형을 int형으로 바꾸는 과정을 한줄로줄이자.
int * iPtr = (int*)malloc(sizeof(int));
이렇게 썻잖아?
malloc함수는 형태를모른다고. 그래서 int형이라는걸 알려주는거지.
크기를 얼마나 할당할까? 그건뒤에 (sizeof(int))를 이용하는거지
int형태로 4개다 그러면 (sizeof(int)*4)가 되겠고
댓글 0