Hat DLL immer dieselbe Basisadresse?

8

Ich untersuche Windows und DLL-Dateien und habe einige Fragen dazu. :)

Ich habe ein einfaches Programm erstellt, das meine eigene DLL lädt. Diese DLL hat nur einfache Funktionen, plus, minus.

Das ist die Frage: Wenn ich eine DLL lade (zum Beispiel text.dll ), hat diese DLL immer dieselbe Basisadresse? oder es ändert sich, wenn ich es neu starte? und kann ich die Basisadresse der DLL halten?

Wenn ich es teste, hat es immer die gleiche Basisadresse, aber ich denke, wenn ich darüber nachdenken muss, muss ich eine Ausnahme bezüglich der DLL-Basisadresse machen.

    
Nagi 03.01.2012, 17:42
quelle

2 Antworten

11

Das Betriebssystem wird Ihre DLL in jeder beliebigen Basisadresse laden. Sie können eine "bevorzugte" Basisadresse angeben, aber wenn diese nicht verfügbar ist (aus welchen Gründen auch immer, die möglicherweise völlig außerhalb Ihrer Kontrolle liegt), wird Ihre DLL vom Betriebssystem an die Adresse des Betriebssystems verschoben System sieht fit.

    
Mike Nakis 03.01.2012, 17:45
quelle
5
  

Ich lade einige DLL (zum Beispiel text.dll), hat diese DLL immer die gleiche Basisadresse?

Nein. Es ist eine bevorzugte Basisadresse. Wenn an dieser Adresse bereits etwas geladen ist, wird das Loader es neu einrichten und alle Adressen korrigieren.

Andere Dinge wie Layout des Adressraumlayouts können dazu führen, dass es bei jedem Start des Prozesses anders aussieht.

>     
vcsjones 03.01.2012 17:48
quelle

Tags und Links