정적 라이브러리와 동적 라이브러리 문의 드립니다

라이브러리를 공부하고 있는데 이해가 안가는 부분이 있네요

암시적 연결은 추가할 라이브러리의 생명주기가 프로세스 단위고,

명시적 연결은 추가할 라이브러리의 생명주기가 Function 단위로 이해하고 있습니다.

정적 라이브러리를 만들면 lib만 생기고, 동적 라이브러리를 만들면 lib랑 dll이 생기는 걸로 알고 있습니다.

그런데 여기서 궁금한게, lib는 단순히 암시적 연결을 할 때, dll과 실행할 프로세스 사이에 링크를 걸어주는 용도로만 알고 있는데, 정적 라이브러리를 만들면 왜 lib만 생기는 건가요?

    1개의 답변이 있어요!

    • 안녕하세요.

      정적라이브러리 lib : 컴파일할때 같이 코드에 들어갑니다. 하나의 프로세스에 포함됩니다. 즉 그림판이 정적라이브러리로 만들어졌다면 그림판을 여러개 실행하면 동일한 함수가 여러개의 메모리 공간을 가집니다.

      동적라이브러리 dll : 코드내에서 필요한 함수를 호출할때 메모리에 동적할당됩니다. 한번 동적할당된 메모리는 동일한 프로그램이 여러번사용할 경우 동일한 함수를 사용하므로 메모리가 추가생성되는것이 아니라 참조값(레퍼런스)만 추가됩니다. 즉 그림판이 여러번 실행되도 최초 실행한 그림판만 함수공간을 가지고 나머지 그림판은 동일한 DLL을 참조해서 사용합니다. 모든 그림판을 실행종료하면 그때 DLL도 동적삭제됩니다.