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

C++Builder Discussion :

Problème mémoire avec une dll par chargement dynamique


Sujet :

C++Builder

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Problème mémoire avec une dll par chargement dynamique
    Bonjour,

    J'ai developpé une application et une dll avec bcb 6. Mon apllication se contente juste de charger la librairie et de la décharger (elle ne fait rien d'autre). Ma dll ne fait rien non plus, je me suis contenté de la générer avec l'assistant et de la compiler. Mon problème viens du fait qu'à chaque chargment et déchargement de la dll, je remarque dans le gestionnaire de tache que la mémoire occupée par mon apllication augmente (de environ 4 ko par chargement/dechargement).

    Auriez-vous une idée pour éviter ce problème ?

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Points : 1 271
    Points
    1 271
    Par défaut
    Bonjour,

    SI tu va faire un tour sur QualityCentral, tu constatera qu'un certain nombre de fuites de mémoire sont déjà répertoriées par rapport aux DLL. Je pense que ton problème doit s'y trouver.

    Cordialement,

    Arnaud

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci pour ta réponse.
    En effet j'ai touvé un ou deux posts en rapport avec le problème mais sans aucune résolution :(
    Je trouve ca bizarre qu'un aussi gros bug puisse subsiter. Cela veut dire que le chargement dynamique de dll dans le cas d'une application ou le chargement/déchargement est fréquent (ce qui est mon cas) est impossible...

  4. #4
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut,
    le chargement et déachagement dynamique de DLL utilise les API win32
    LoadLibrary et Freelibrary
    aucune réservation mémoire est faite par le programme utilisant un appel à ces fonctions.
    pour t'en convaincre tu peux utiliser un outil traquant les fuites mémoires
    par ex: Memproof http://www.automatedqa.com/.
    tu constatera que le compteur des LivesPonteur,VirtualMemory ..etc n'est pas incrémenté lors de l'apppel au chargement repectivement déchargement d'une DLL
    c'est l'OS qui incrémente automatiquement l'espace mémoire accordé à ton programme
    tant que l'OS n'a pas besoin de plus de mémoire supplémentaires pour ces tâches internes ou externes il ne reorganise pas la mémoire

    dans le le gestionnaire de taches chaque process reçoit au chargement
    suffisamment de mémoire,la capacité accordée à chaque process peut dès lors augmenté ou diminué au gré de L'OS

    Cordialement
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Salut DjmSoftware,
    et merci pour ta réponse :)
    J'ai téléchargé memproof et en effet il ne detecte pas de fuite mémoire. Cependant j'ai une petite question. Pourquoi l'utilisation mémoire de mon programme (que je vois dans mon task manager) augmente seulement avec les dll compilées avec borland ? Moi ce qui me fait peur c'est qu'au bout de 2000 chargement/déchargement l'espace alloué au programme passe de 3mo à 14mo et l'espace totale utilisé augmente d'autant...

  6. #6
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut,
    j'ai essayé te charger et décharcher dynamiquement une DLL plus de 1000 fois la consomation mémoire indiquée dans le TaskManager n'augemente pratiquement pas (1850K --2040K) après
    d'autre part les valeurs indiquées dans le TaskManager ne sont pas toujours les mêmes

    tu obtiendra des résultats plus surprenamt encore en minimisant ou en agrandissant la fenêtre de ton appli (1860K -- 300K)

    donc pas de soucis

    cordialement
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci de ton aide.

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

Discussions similaires

  1. Problème de tas avec une dll
    Par vinny_the_true dans le forum C++
    Réponses: 8
    Dernier message: 17/12/2006, 19h14
  2. Problème de creation de repertoire avec une DLL
    Par Avisseau dans le forum Delphi
    Réponses: 4
    Dernier message: 19/06/2006, 09h13
  3. Creation dynamique d'elements de menu avec une DLL
    Par Sunchaser dans le forum C++Builder
    Réponses: 5
    Dernier message: 14/12/2005, 21h52
  4. Problème avec une DLL dans une boucle For
    Par BraDim dans le forum Langage
    Réponses: 5
    Dernier message: 20/09/2005, 12h22
  5. Problème avec une DLL
    Par SER dans le forum Langage
    Réponses: 7
    Dernier message: 23/08/2005, 13h58

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