간단하고 자주 call 되는 function 의 경우 function call 자체로 overhead 일 수 있다.
간단하게 build processor 를 복습해보면...
HelloWorld.c (source code) 를 compile (기계어로 변역) → 일종의 설계도
.obj 목적 파일 생성(기계어) → 일종의 부품
Linker 가 목적 파일을 Link 한다. → .exe 실행 파일이 나온다.
여기서 Link error (있어야 할게 없거나, 하나만 있어야 할게 여러개 있거나..) 가 없다면
무사패스! (그냥 한번 복습 해 봤다..)
Memory Stack은 어떻게 동작할까?
다른 장에 쬐끔 더 자세하게 정리해 놓겠지만 간단히 적어보면
Memory Stack은 Stack Frame 단위로 쌓아간다. 하나의 variable씩 쌓아가는게 아니다.
function이 call되고 call된 function과 함께 주소값과, function의 매개변수가 같이 쌓인다.
function 하나를 call 했는데 꽤나 이것저것 딸려온다.
이러한 동작들이 쌓이고 쌓이다 보면 불필요한 작업이 되고, 불필요한 자원이 발생한다고 한다.
이를 어느정도 해소시키기 위함이 inline keyword다.
이는 작은 함수에 적절한데, function call 에 필요한 시간이 실제로 function code를 실행하는데 필요한 시간보다 훨씬 많은 경우에 사용하면 좋다.