본문 바로가기

TIL/잡다한

정적/동적 라이브러리 차이점

반응형

예전에 면접 질문보면서 공부했던건데 사소한데도 불구하고 이해를 못해서 적어본다


정적 라이브러리는 컴파일시 실행파일에 포함되며,

동적 라이브러리는 실행시 실행파일에 포함된다.


예를 보면:


실행파일이 1메가, 라이브러리가 100메가의 용량의 가지고 있다고 가정할 때,


정적 라이브러리의 경우 컴파일시 라이브러리가 실행파일에 포함되기 때문에,

위의 경우 컴파일후엔 실행파일의 용량이 101메가가 된다.


동적 라이브러리의 경우 실행시 포함되기 때문에,

실행파일은 그대로 1메가, 라이브러리 100메가로 따로 존재하게 된다.


결국엔 용량은 정적/동적 라이브러리 같게 되는데...


차이점은 실행될 때 발생된다. 즉,


정적 라이브러리의 경우 실행파일이 101메가 이므로, 실행 시작부터 종료시까지 101메가의 메모리를 사용한다.

but 동적 라이브러리의 경우 실행파일이 1메가 이므로, 메모리를 1메가만 사용중 필요시만 100메가의 라이브러리를 로드하고, 불 필요시 100메가를 반환하게 된다는 말.


그럼 여기서 질문은 우리는 과연 정적을 사용해야할까 아니면 동적을 사용해야할까?


1. 만약에 자주 라이브러리를 로드하는 실행파일이라면 정적으로 하는게 좋다. (동적은 라이브러리 로드/언로드에 시간이 소요하게되므로)

2. 만일 아닐경우 동적으로 하는게 좋음.


(출저: http://rakuraku.tistory.com/91)

반응형