Bonjour à tous,

Je viens de découvrir avec étonnement qu'il fallait définir autant que possible la "prefered base address" des DLLs que l'on va mapper de façon à ce que le loader n'ait pas à les "rebaser".
Ceci afin d'éviter de devoir modifier toutes les adresses absolues existantes mais également pour garder la possibilité que le code de la DLL soit partagé entre plusieurs process.
(source ICI et ICI)

Sous réserve d'avoir mal compris, j'ai deux questions qui me viennent à l'esprit :
1) Est-ce correct ce que j'ai résumé plus haut? Parce qu'avec le nombre actuel de DLLs, il devient assez complexe d'estimer un endroit "libre" en mémoire, sans compter la taille que font chaque dll une fois mappées en mémoire.
2) S'il y a rebasing car l'adresse "préférée" n'est pas disponible lors du mapping, comment le loader peut-il modifier chaque adresse absolue qui se trouve dans le code? Ca me semble presque impossible.

Merci d'avance,
Nicolas