동적 바인딩과 정적 바인딩

임시온·2023년 7월 13일
1

C

목록 보기
1/1
post-thumbnail

바인딩(binding)

  • 각종 값들이 확정되어 더 이상 변경할 수 없는 구속(bind) 상태가 되는 것
  • 변수, 배열, 라벨, 절차 등의 식별자가 대상인 메모리 주소, 데이터형 또는 실제 값으로 배정되는 것이 이에 해당됨. 예를 들자면 int a = 1; 이런거에 int, a, 할당되는 데이터 값 1 이런 것들이 포함됨.
  • 메모리 번지로 연결시켜 주는 것
  • 바인딩 종류는 2가지가 있는데 정적 바인딩과 동적 바인딩이 있ㄷ.
  • 메모리에 값을 할당하는 것

Static binding( 정적 바인딩 )

  • 컴파일 과정에서 바인딩 되는 것을 정적 바인딩이라고 함.
  • 프로그램 실행 이전에 값이 확정됨
  • 컴파일 타임에 호출될 함수나 변수 등이 결정됨
  • 컴파일 시 이미 값이 확정이 되어 있기 때문에 속도가 빠름

Dynamic binding( 동적 바인딩 )

  • 값이 동적으로 결정되어 시스템 설계가 유연함
  • 점프할 메모리 번지를 저장하기 위한 메모리 공간을 가지고 있다가 런타임 즉 프로그램이 실행될 때 결정이됨. 이때 메모리는 4byte 를 가지고 있어서 저장하는 것이 크든 작든 같은 메모리를 저장하기 때문에 메모리 공간 낭비가 있음
  • 실행 시에 메모리를 할당
  • heap 이라는 곳에 저장됨( heap은 런타임 시 메모리를 할당해주는 곳 )

간단한 예시

int a = 1; 이라는 것으로 예시를 들자면 int 와 a 는 타입과 변수로 정적 바인딩이다. 데이터 타입과 변수명은 컴파일 시에 메모리에 할당됨, 하지만 1은 프로그램 동작 시 변수에 값이 할당되는 것으로 동적 바인딩이라고 할 수 있다. 또 다른 예시로는 포인터가 있다. 일반 변수라면 프로그램이 끝날 때 까지 같은 주소값을 가르키지만 포인터는 계속 가르키는 주소가 변할 수 있기에 동적으로 할당된다.

관련 포스팅

함수포인터 개념과 사용이유

참고자료

https://kyoun.tistory.com/33
https://todayscoding.tistory.com/16
https://online-unreal.tistory.com/75

profile
🐧 끈기 있는 개발자

0개의 댓글