동적 적재(dynamic loading) 또는 동적 링크(dynamic linking)은 컴퓨터 프로그램이 메모리로 라이브러리 또는 다른 프로그램을 적재/링크하는 방식으로, CPU의 메모리 사용량을 줄이기 위해 일부 라이브러리 코드의 적재/링크를 미뤄둔다. 미뤄진 라이브러리 코드는 생성된 실행 파일에 포함되지 않으며, 동적 링크 라이브러리(.dll)에 저장된다. 또한 이는 프로그램 실행 도중 필요시, CPU의 호출에 의해 링크, 적재된다.

C/C++ 편집

요약 편집

이름 표준 POSIX/UNIX API 마이크로소프트 윈도우 API
헤더 파일 포함 #include <dlfcn.h> #include <windows.h>
헤더를 위한 정의 dl

(libdl.so, libdl.dylib 등. OS에 따라)

kernel32.dll
라이브러리 로드 dlopen LoadLibrary
LoadLibraryEx
내용 추출 dlsym GetProcAddress
라이브러리 로드 해제 dlclose FreeLibrary

자바 편집

자바 프로그래밍 언어에서 클래스는 ClassLoader 오브젝트를 사용하여 동적 로드가 가능하다. 이를테면:

Class type = ClassLoader.getSystemClassLoader().loadClass(name);
Object obj = type.newInstance();

Reflection 매커니즘은 또한 이미 클래스가 로드된 것이 아니라면 클래스를 로드할 수단을 제공한다. 현재 클래스의 클래스로더를 사용한다:

Class type = Class.forName(name);
Object obj = type.newInstance();