📕Programming/📝C/C++

[C / C++] 인라인 함수 (inline function)

주으기 2023. 12. 28. 16:10
728x90
반응형

인라인 함수란?

인라인 함수를 설명하기 위해서는 먼저, 오버헤드(Overhead)를 알아야 한다.

오버헤드란 어떤 작업을 수행하는 데 필요한 추가적인 처리나 리소스를 의미한다.

 

함수를 호출하게 되면, 매개변수 전달, 반환 주소 저장, 지역 변수 할당 등의 추가적인 작업을 수행하게 된다.

int Add(int a, int b)	//매개변수를 스택에 저장
{    
    return a + b;		//리턴 값을 임시 저장소에 저장
}

int num;
num = Add(5,1);			//함수 호출 시점, 이곳의 주소값을 스택에 저장

 

인라인 함수는 이런 함수 호출 오버헤드를 감소시키기 위해 만들어진 기능이다.

이는 함수 호출 과정을 거치지 않고, 함수의 모든 코드를 호출된 자리에 바로 삽입하는 방식의 함수이다.

 

 


 

 

인라인 함수의 사용

인라인 함수의 사용법은 함수 선언 시에 inline이라는 키워드를 앞에 붙이면 된다.

inline int Add(int a, int b)
{    
    return a + b;
}

int num;
num = Add(5,1);
// num = 5 + 1;

이 코드가 컴파일되면, 함수 호출이 마지막 줄과 같이 대체되어 실행된다.

 

인라인 함수의 장점은 프로그램의 실행 속도가 빨라진다는 점이다.

그러나, 인라인 함수의 단점은 메모리 사용 측면에서 일반 함수보다 불리하다.

 

인라인 함수는 함수를 호출하는 경우가 몇 번이 되었든 컴파일러는 인라인 함수의 사본을 호출한

부분에 계속해서 삽입해야 하기 때문에 그 만큼 메모리의 낭비가 있을 수 있다.

 

그러므로 인라인 함수를 사용하기에 적절한 곳은 호출이 많이 일어나지 않는 함수이거나

함수 내부 코드의 양이 매우 작은 경우에 사용하기 적합하다.

 

 

 

 

 

728x90
반응형