* 저도 잘알못이라 틀릴수있으니 혹시틀렷다면 누가 시비걸어주샘


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)가 되겠고