Źródło: Arkusze CKE
W jaki sposób można dynamicznie załadować bibliotekę w języku C/C++ i jakie są zalety takiego rozwiązania?
Warianty odpowiedzi
-
A
Biblioteki dynamiczne ładuje się wyłącznie przy kompilacji, więc nie można ich ładować w czasie działania programu.
-
B
Dynamiczne ładowanie biblioteki odbywa się przy pomocy polecenia gcc -dynamic-load.
-
C
Za pomocą funkcji dlopen() w systemach Unix/Linux i LoadLibrary() w Windows; pozwala to na zmniejszenie rozmiaru pliku wykonywalnego.
-
D
Biblioteki ładowane dynamicznie są zawsze wolniejsze od bibliotek statycznych, więc nie mają zalet.
Wyjaśnienie
Dynamiczne ładowanie bibliotek polega na tym, że program prosi system operacyjny o wczytanie biblioteki do pamięci dopiero podczas wykonywania kodu, w dowolnym wybranym momencie.
W systemach z rodziny Linux używa się do tego funkcji dlopen(), a w Windowsie odpowiada za to LoadLibrary().
Główną zaletą jest oszczędność zasobów. Program uruchamia się szybciej i zajmuje mniej pamięci, bo ładuje tylko te moduły, z których w danej chwili faktycznie korzysta.