Bonjour à tous,
Je voulais savoir/avoir des éclaircissements quant à la nécessité de FreeLibrary() (après un LoadLibrary()).
Je sais (si je me trompe pas), en gros, que lorsqu'on load une dll avec LoadLibrary(), c'est en fait un "pseudo" pointeur qui est copié dans l'espace d'adressage du programme appellant, et le compteur de référence à cette dll est incrémenté. En appellant FreeLibrary(), le compteur de référence est diminué, s'il atteint zéro, la dll est déchargée de la mémoire.
C'est justement là que je me pose la question de l'utilité de FreeLibrary :
- si l'on charge une dll dite 'système', on est presque sur que cette dll restera chargé toute l'execution de windows, le compteur de référence ne sera jamais à zéro, d'où ma question sur l'utilité de FreeLibrary() dans ce cas
- si l'on charge une dll perso par exemple, le fait que le programme est détruit à la fin de son execution détruit aussi la mémoire allouée au programme (donc la mémoire alloué à la dll) non ? ou la dll est chargé en dehors et il n'y a réellement dans ce cas aussi que le pointeur qui est copié dans l'adressage mémoire du programme appellant?
Mon raisonnement est forcément erroné quelque part, FreeLibrary a forcément une utilité dans un certain contexte, mais je vois pas du tout, peut-être avec vos éclaircissements ...
Partager