메모리 할당함수.
변수
지역 변수 -> 스택 영역
전역, 정적, 외부 변수 -> 데이터 영역
메모리 영역
스택
데이터
ROM
힙 (동적할당)
변수라는 말이 코드상에서 자료형과 이름을 정해놓은 것임
그런데 프로그램을 실행을 해봐야만 알 수 있는 변수는??
런타임 중에 대응이 가능한 == 동적 할당 메모리 영역 ( 실행해 봐야 알 수 있다. )
=> 그래서 포인터가 나옴.
malloc()함수는 내가 지정한 size만큼 힙 영역에 메모리를 생성시켜준다.
malloc(100);
하게되면
이렇게 100바이트 힙에 할당하고 주소를 return 한다.
(인자로 Byte수를 입력받는다)
그러면 주소를 받은애가 주소여야한다.
무슨변수? => 포인터 변수.
지금 int* pInt는 스택에 있는 녀석임.
지금 malloc 함수의 "반환 "타입"이" void포인터 이다.
void 포인터 뭐냐?
=> 어떤 자료형이든지 상관없다? 그런뜻으로 기억중임.
그래서 (int*)로 형변환 해주어서 pInt에다가 할당 한 것이다.
void 포인터 == 주소는 주손데
주소의 원형을 어떻게 볼 것인지를 정하지 않은 것이다.
if ()
{ mlloc(4); }
할수도 있기 때문에 동적으로 되어야 하기 때문에 반환타입이 void이다.
malloc은 주소만 넘겨줄 뿐이다.
이런 의도들을 파악하려면 "포인터" 개념이 잘 되어있어야한다.