다음을 통해 공유


동적 연결의 이점

동적 연결은 정적 연결보다 다음과 같은 이점이 있습니다.

  • 동일한 기본 주소에 동일한 DLL을 로드하는 여러 프로세스가 실제 메모리에서 DLL의 단일 복사본을 공유합니다. 이렇게 하면 시스템 메모리가 절약되고 교환이 줄어듭니다.
  • DLL의 함수가 변경되면 함수 인수, 호출 규칙 및 반환 값이 변경되지 않는 한 이를 사용하는 애플리케이션을 다시 컴파일하거나 다시 연결할 필요가 없습니다. 반면, 정적으로 연결된 개체 코드는 함수가 변경될 때 애플리케이션을 다시 연결해야 합니다.
  • DLL은 애프터 마켓 지원을 제공할 수 있습니다. 예를 들어 애플리케이션이 처음 배송되었을 때 사용할 수 없는 디스플레이를 지원하도록 디스플레이 드라이버 DLL을 수정할 수 있습니다.
  • 다른 프로그래밍 언어로 작성된 프로그램은 프로그램이 함수에서 사용하는 것과 동일한 호출 규칙을 따르는 한 동일한 DLL 함수를 호출할 수 있습니다. 호출 규칙(예: C, Pascal 또는 표준 호출)은 호출 함수가 인수를 스택에 푸시해야 하는 순서, 함수 또는 호출 함수가 스택 정리를 담당하는지 여부 및 인수가 레지스터에 전달되는지 여부를 제어합니다. 자세한 내용은 컴파일러에 포함된 설명서를 참조하세요.

DLL 사용에 대한 잠재적 단점은 애플리케이션이 자체 포함되지 않는다는 것입니다. 별도의 DLL 모듈의 존재에 따라 달라집니다. 시스템은 프로세스 시작 시 찾을 수 없는 DLL이 필요하고 사용자에게 오류 메시지를 제공하는 경우 로드 시간 동적 연결을 사용하여 프로세스를 종료합니다. 시스템은 이 상황에서 런타임 동적 연결을 사용하여 프로세스를 종료하지 않지만 누락된 DLL로 내보낸 함수는 프로그램에 사용할 수 없습니다.