Window DLL 개념 및 사용이유?

in #kr-dev7 years ago

안녕하세요!! @wonnieyoon입니다.
오늘은 DLL 의 개념에 대해 포스팅 해보겠습니다.

DLL 이란?
Dynamic Linking Library의 줄인말로서
동적으로 링크해서 사용하는 라이브러리를 말합니다.
여기서 동적이란 프로그램 실행 중에 링크 된다는 의미를 가집니다.

프로그램을 작성하여 빌드 할때 처음에 .c 혹은 .cpp 파일을 빌드하여 .obj 파일을 만들고 관련 오브젝트를 모아 링크하여 .exe 파일을 만들게 됩니다. 여기서 링크란 빌드 시점에 이루어 지는 정적인것을 말합니다. 하지만 DLL 의 경우는 빌드시점에 링크되는것이 아니라 빌드된 실행 바이너리 파일이 실행 중에 코드 따라 외부 라이브러리에 링크 되거나 링크 되지 않을수 있습니다.

그럼 DLL 은 왜 사용할까요?

  1. 개발을 나눠서 할때
    4명이 개발을 한다고 가정해봅시다.
    한명은 UI를 만들고 나머지는 각각 A,B,C . dll을 만들어 UI에 연결 시키기만 하면 되니 효율성이 높아집니다.

  2. 라이브러리 공유
    A기능을 하는 A.dll 을 만들었다면 다음에 A기능을 필요로 하는 dll을 만들 필요는 없습니다.
    A.dll을 가져와서 계속 사용하면 되기 때문이죠.

  3. 메모리를 적게 사용
    보통 프로그램이 실행되면 .exe 파일과 .dll 파일이 함께 필요합니다.
    그렇다면 만약 A.exe + c.lib , B.exe + c.lib 을 실행 한다면
    메모리에는 총 4개의 공간을 차지하게 됩니다.

하지만 A.exe , B.exe , dll 을 사용하게 된다면
dll을 참조해서 사용하면 되기 때문에 총 3개의 공간을 차지하게 됩니다.

결국 메모리 효율성이 증가 하게 되는것이죠.

tip)
참고로 dll의 경우 참조 카운터가 존재하게 되는데
dll을 참조할때 마다 참조 카운터가 증가하고 해제 할때 마다
카운터가 감소하게 됩니다.
참조 카운터가 0이 되면 메모리에서 내려오게 됩니다.

Sort:  

짱짱맨 호출에 출동했습니다!!

오오 처음알았네요