IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

Comportement mémoires des dll linkées ou externes ?


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 27
    Par défaut Comportement mémoires des dll linkées ou externes ?
    Bjr,
    Dans le cadre d'un dev VS2008, je souhaite à tout prix réduire l'empreinte mémoire code et données de mon programme.
    On initialise donc la majorité des structures du référentiel de données dans une dll linké lors de la compilation avec passage de pointeurs et force malloc/calloc.

    Mon programme également fait appel à une dll externe chargée via l'instruction LoadLibrary.

    Quel comportement vis à vis de la mémoire de ces deux implémentations d'appel à des dll ? Cela dépend-t-il uniquement du paramètre système "AlwaysUnloadDll" ?

    Merci de votre attention.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 27
    Par défaut
    Auto-Réponse :

    1) La terminologie semble être dll implicite pour celles linkées, explicite pour celles chargées par "LoadLibrary".
    2) Les implicites sont chargés et déchargés avec le main.
    3) Les explicites sont déchargeables par l'API "FreeLibrary".

    En conclusion, il semble que seul le mode explicite permet d'atteindre l'objectif d'économie de ressources mémoire.

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 493
    Par défaut
    Charger une librairie ne signifie pas charger tout le code de la librairie en mémoire, loin s'en faut.
    Cela ne réserve qu'une section de l'espace d'adressage et modifie quelques structures internes utilisées par l'OS. C'est donc négligeable à moins d'avoir des centaines de milliers de dll.

    Le problème n'est donc pas le chargement de ou des dll.

    Vous ne nous donnez que très peu d'information sur la nature de l'empreinte mémoire.
    Ratio code/donné, taille du working-set, nature des phases critique (démarrage à chaud, à froid), localité du code.

    Pour correctement corrigé un problème d'empreinte mémoire, il faut analyser celle-ci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser des DLL externes dans un projet Qt
    Par Kermichou dans le forum Qt
    Réponses: 2
    Dernier message: 18/07/2013, 15h28
  2. Unicité des dlls en mémoire.
    Par bleuerouge dans le forum C#
    Réponses: 9
    Dernier message: 05/06/2012, 16h48
  3. Réponses: 3
    Dernier message: 05/03/2010, 09h00
  4. utiliser des DLL externe dans crystal report XI
    Par dimmu dans le forum EDI/Outils
    Réponses: 0
    Dernier message: 25/01/2009, 14h10
  5. [VS2003] Débugger des DLLs avec un .exe externe
    Par Vonziz dans le forum Visual Studio
    Réponses: 4
    Dernier message: 22/08/2008, 16h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo