CPP_어소_41_동적할당

CJB_ny·2022년 6월 24일
0

CPP_AROTHO

목록 보기
39/83
post-thumbnail
post-custom-banner

malloc()

메모리 할당함수.

메모리는

변수

  • 지역 변수 -> 스택 영역

  • 전역, 정적, 외부 변수 -> 데이터 영역

메모리 영역

  • 스택

  • 데이터

  • ROM

  • 힙 (동적할당)


변수라는 말이 코드상에서 자료형과 이름을 정해놓은 것임

그런데 프로그램을 실행을 해봐야만 알 수 있는 변수는??

런타임 중에 대응이 가능한 == 동적 할당 메모리 영역 ( 실행해 봐야 알 수 있다. )

힙영역을 변수 없이 어떻게 씁니까?

=> 그래서 포인터가 나옴.

malloc()함수는 내가 지정한 size만큼 힙 영역에 메모리를 생성시켜준다.

malloc(100);

하게되면

이렇게 100바이트 힙에 할당하고 주소를 return 한다.

(인자로 Byte수를 입력받는다)

그러면 주소를 받은애가 주소여야한다.

무슨변수? => 포인터 변수.

지금 int* pInt는 스택에 있는 녀석임.

포인터 잘 기억하고있나?

지금 malloc 함수의 "반환 "타입"이" void포인터 이다.

void 포인터 뭐냐?
=> 어떤 자료형이든지 상관없다? 그런뜻으로 기억중임.

그래서 (int*)로 형변환 해주어서 pInt에다가 할당 한 것이다.


void 포인터 == 주소는 주손데

주소의 원형을 어떻게 볼 것인지를 정하지 않은 것이다.


이해한거

if ()
{ mlloc(4); }

할수도 있기 때문에 동적으로 되어야 하기 때문에 반환타입이 void이다.

malloc은 주소만 넘겨줄 뿐이다.

이런 의도들을 파악하려면 "포인터" 개념이 잘 되어있어야한다.

profile
https://cjbworld.tistory.com/ <- 이사중
post-custom-banner

0개의 댓글