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++ Discussion :

[Borland C++] Gestion de la mémoire?


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Etudiant a 42 en developement logiciel et R&D
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Etudiant a 42 en developement logiciel et R&D

    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Points : 25
    Points
    25
    Par défaut [Borland C++] Gestion de la mémoire?
    Bonjour à toutes et à tous,

    Je viens vous questionner sur ce point épineux, qui est la gestion mémoire. Aucune urgence, ce n'est qu'a titre informatif !

    Deux questions donc :

    1) J'ai créé un soft relativement simple composé de trois forms, une utilisation de SQL serveur, execution Proc-stock et tableau de select et c'est tout.

    Sur mon pc 64 bits, windows 7, le soft pèse environ 4Mo2.
    Sur le terminal déporté, windows XP pro 32 bits, 11Mo.

    J'aurai compris qu'il y'est une différence multiplié par 2 entre les deux dut à la différence entre 64bits et 32bits mais sous condition que le compilateur compile en 64bits non? et pourquoi une différence plus importante? Il y'a une gestion différente de la mémoire entre Seven et XP?

    2) La deuxième question est sur la libération de la mémoire. J'ai donc toujours mon soft avec 3 forms, je tente de gérer au mieux la mémoire (pour voir son fonctionnement, pas vraiment d'utilité dans mon cas), à chaque fermeture des form (et non du process) je delete un maximum d'objet. Étrangement, la mémoire n'est pas libéré suite à la destruction, et même les boites de dialogues Borland, objet MessageDLG après destruction ne sont pas libéré.

    J'aimerai en faite juste savoir pourquoi?

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 195
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 195
    Points : 17 163
    Points
    17 163
    Par défaut
    Je dirai que la première cause de différence, c'est la différence entre les libs systèmes des os.

    Après, je ne suis pas expert des différences entre les binaires.

  3. #3
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 159
    Points
    3 159
    Par défaut
    Citation Envoyé par Arameya Voir le message
    Sur mon pc 64 bits, windows 7, le soft pèse environ 4Mo2.
    Sur le terminal déporté, windows XP pro 32 bits, 11Mo.

    J'aurai compris qu'il y'est une différence multiplié par 2 entre les deux dut à la différence entre 64bits et 32bits mais sous condition que le compilateur compile en 64bits non? et pourquoi une différence plus importante? Il y'a une gestion différente de la mémoire entre Seven et XP?
    Quand tu dis "pèse X Mo", tu parles bien de la consommation de RAM à l'exécution ?
    Beaucoup de choses changent entre XP 32bits et Seven 64 bits : les versions des bibliothèques utilisées peuvent changer notamment, ce qui peut impacter ton occupation de RAM. Cela dit à aussi petite taille, pour une appli graphique avec des forms... je ne m'en soucierais pas.

    Citation Envoyé par Arameya Voir le message
    2) La deuxième question est sur la libération de la mémoire. J'ai donc toujours mon soft avec 3 forms, je tente de gérer au mieux la mémoire (pour voir son fonctionnement, pas vraiment d'utilité dans mon cas), à chaque fermeture des form (et non du process) je delete un maximum d'objet. Étrangement, la mémoire n'est pas libéré suite à la destruction, et même les boites de dialogues Borland, objet MessageDLG après destruction ne sont pas libéré.
    Et la mémoire gonfle-t-elle quand tu ré-ouvres un form fermé ? Peut-être que les bibliothèques que tu utilises conservent de la mémoire ou des objets internes pour les réutiliser. Sinon, un petit coup de Dr Memory pour trouver les fuites (32 bits only) pourrait t'aider.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Etudiant a 42 en developement logiciel et R&D
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Etudiant a 42 en developement logiciel et R&D

    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Points : 25
    Points
    25
    Par défaut
    Non je ne m'en soucie pas du tout, c'est juste pour ma compréhension personnel.
    Effectivement aucun intérêt pour mon application !

    Je parle en effet de la consommation mémoire à l’exécution. Les seules bibliothèque qui change sont celle de Windows, puisque je compile un soft presque entièrement fait sous VCL et que les Dlls borlands sont à la racine du programme.

    Et sinon non, une fois que la mémoire est utilisé, elle ne se réattribue pas d'autre emplacement si je ré-ouvre les fenêtre. D'où justement mon interrogation. Etant donné que je détruit mes fenêtres lors de la libération pourquoi Windows ne libère pas les registre qui était utilisé?

    Je n'ai jamais eu de cours lorsque j'était étudiant sur la façon dont est géré la mémoire après son attribution. C'est dommage.

    J'ai découvert que récemment qu'il y'avais sur ce site des cours intéressant sur la compréhension / Lecture du code bas niveau, ça va surement m'expliquer pas mal de chose, mais faut que je prenne le temps de les lires tranquillement !

  5. #5
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 159
    Points
    3 159
    Par défaut
    Citation Envoyé par Arameya Voir le message
    Et sinon non, une fois que la mémoire est utilisé, elle ne se réattribue pas d'autre emplacement si je ré-ouvre les fenêtre. D'où justement mon interrogation. Etant donné que je détruit mes fenêtres lors de la libération pourquoi Windows ne libère pas les registre qui était utilisé?
    Deux explications:
    - Soit c'est une stratégie de Windows avec la mémoire (mais je ne suis pas assez spécialiste pour savoir), pour éviter les ré-allocations trop fréquentes.
    - Soit c'est une stratégie des bibliothèques de Borland (ou de Windows à haut niveau pour la gestion des fenêtres) qui décide de conserver des objets construits en mémoire (mais à ton insu en tant qu'utilisateur) pour éviter d'avoir à les ré-allouer ensuite.

    Dans tous les cas, c'est plutôt une bonne chose.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Etudiant a 42 en developement logiciel et R&D
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Etudiant a 42 en developement logiciel et R&D

    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Points : 25
    Points
    25
    Par défaut
    Oui evidemment c'est une bonne chose, mais j'avoue que j'espérait qu'on est plus la main la dessu.

    Bon je te remercie pour cette tentative d'explication qui me contente pour le moment
    Si j'ai un peu de temps à tuer, j'irai trouver des infos plus précise sur le net

    Merci à vous !

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 02/02/2006, 12h03
  2. gestion de la mémoire
    Par moldavi dans le forum C++
    Réponses: 17
    Dernier message: 04/02/2005, 23h18
  3. Réponses: 11
    Dernier message: 26/12/2004, 22h50
  4. Gestion de la mémoire entre plusieurs DLL
    Par Laurent Gomila dans le forum C++
    Réponses: 7
    Dernier message: 27/07/2004, 15h28
  5. Gestion des variables - mémoire ?
    Par RIVOLLET dans le forum Langage
    Réponses: 4
    Dernier message: 26/10/2002, 12h44

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