반응형

함수를 만들어서 컴파일 하면 각각의 코드가 기계어로 번역되어 메모리 상의 어딘가에 저장된다.

그리고 이 함수를 호출하는 부분에는 그 함수가 위치한 메모리 번지가 저장된다.

프로그램을 실행하면 명령어가 차례로 수행되다가 함수를 호출하는 부분을 만나면, 

이 함수가 있는 메모리 번지로 점프를 해서 그 함수를 실행하고, 원래 위치로 되돌아 온다.

이와 같이 함수를 호출하는 부분에 함수가 위치한 메모리 번지를 연결시켜 주는 것을

바인딩이라고 한다. 함수를 바인딩 하는데는 두가지 방법이 있다. 

 1. 정적 바인딩

 2. 동적 바인딩


1. 정적 바인딩

일반적인 함수는 실행 파일을 만들 때 바인딩을 할 수 있다.

즉, 컴파일을 해서 실행파일을 만드는 단계에서 함수를 호출하는 부분과 그 함수가 저장되는 부분을 연결시킬 수 있다.

* 실행파일을 만들 때 호출될 함수로 점프할 번지가 결정되어 바인딩되는 것을 정적 바인딩이라고 한다.


2. 동적 바인딩

실행 파일을 만들 때는 바인딩이 되지 않고, 보류 상태로 두었다가 프로그램이 실행될 때 바인딩 되도록 할 수가 있다.

* 실행 파일을 만들 때는 호출될 함수로 점프할 번지를 결정하지 않고 빈칸으로 두었다가,

프로그램을 실행할 때 점프할 번지를 즉성에서 결정하여 함수를 실행하도록 하는 것을 동적 바인딩이라고 한다.


동적 바인딩의 단점

① 프로그램을 실행하는 중에 바인딩을 해야 하기 때문에 거의 무시할 수 있을 만큼이긴 하나 

    정적 바인딩을 하는 경우보다 수행 속도가 떨어진다.

② 바인딩에 필요한 메모리 번지를 저장할 포인터를 가지고 있어야 하므로, 

    정적 바인딩을 할 때는 필요없는 메모리가 함수 당 4바이트씩 더 필요하다.


반응형

'프로그래밍 > C, C++' 카테고리의 다른 글

정적 바인딩과 동적 바인딩  (0) 2013.07.08
상속(Inheritance)  (0) 2013.07.07
가상함수  (0) 2013.06.03
객체지향 언어의 특징  (0) 2013.06.03
Visual leak detector  (0) 2013.05.03

+ Recent posts