ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인라인함수
    c++ 2019. 12. 29. 12:44

    이 부분은 책으로 공부 할 때 잘 이해가 안가는 부분이어서 구글링을 통해 확실히 학습하였다.

     

    인라인 함수

    프로그램의 실행 속도를 높이기 위해 추가된 기능이며 c언어의 매크로 함수와 비교된다.

     

    일반함수와 인라인 함수호출의 차이가 뭔지 알아보겠다.

     

    일반 함수 

     

     

    일반 함수 호출

    일반 함수 호출 방법은 프로그램 실행 중 함수를 실행하면(2) 해당 함수의 주소로 점프했다가(3) 함수의 처리가

    종결되면(4) 다시 원래 자리로 돌아온다(5)

    이렇게 함수로 이동했다가 복귀하기 때문에 함수를 사용하는데 시간이 다소 많이 걸린다.

     

    인라인 함수

     

     

    인라인 함수

     

    인라인 함수는 컴파일된 함수 코드가 프로그램의 코드 안에 복제하여 직접 삽입되어진다 즉 개발자나 사용자의 눈에는 보이지 않지만 add함수가 복제되어 main함수의(2)에 그대로 붙어넣어져있는것이다. 이 말은 즉 컴파일러가 함수를 호출하는 대신, 그에 대응하는 함수 코드로 대체한다는 것을 의마하며 함수 호출 없이 삽입된 함수 코드를 그 자리에서 처리하므로 해당 함수를 수행하기 위해 프로그램이 다른 주소로 이동했다가 복귀할 필요가 없어 속도면에서 일반 함수 호출방법에 비해 유리하다.

     

    장점이 있으면 단점또한 존재하는게 원칙이다

    단점으로는 메모리 사용 측면에서 인라인 함수가 일반 함수 호출보다 불리하다. 이유는 어떤 프로그램에서 인라인 함수를 5번 호출 한다면 프로그램은 그 함수를 복제한 것을 프로그램 코드 안에 5번이나 삽입해야 하기 때문이다 따라서 메모리 사용량이 일반 함수 방식보다 기하급수적으로 늘어난다. 함수 호출이 적은 프로그램을 빠르게 실행시키고 싶을때 인라인 함수를 사용한다면 인라인 함수를 잘 이해하고 올바르게 사용한것이다.

     

    c언어의 매크로함수

     

     

    매크로함수

    #define을 통해서 함수처럼 동작하는 매크로를 말한다.

    매크로함수는 일반 함수와 약간 다르다, 단순 치환만 해주는 방식이다.

    'c++' 카테고리의 다른 글

    헤더 가드  (0) 2020.01.13
    모두의 약수  (0) 2020.01.03
    상속 연습문제  (0) 2019.12.28
    매개변수 갖는 생성자 연습문제  (0) 2019.12.28
    동적메모리를 사용한 stack  (0) 2019.12.28
Designed by Tistory.