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 :

Memory Managment dans vos programmes


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Par défaut Memory Managment dans vos programmes
    Bonjour à tous .
    Dans le cadre d'un projet conséquen il parrait difficile de ne se passer totalement d'une gestion de la mémoire . Je me demande comment vous y parvenez, je serait surtout intéréssé par les libraries que vous utilisez ( si c'est le cas ... ), les "règles d'or" que vous respectez ...

    Si ca peux aider, je compile sous windows avec VC++ 2003 , mais je tiens à ce que mon programme soit portable .

    Sinon , j'ai vu qu'une librairie revenait pas mal de fois, le mémory manager de Fluid's Studio, vous en pensez quoi ? J'ai du mal à trouver un article conséquent dessus, détaillant son utilisation, ses pours et ses contres ...

    Merci .

  2. #2
    Membre chevronné Avatar de aziz jim
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 455
    Par défaut
    En ce qui concerne la gestion de la mémoire, j'éspère que ceci vous aidera:


    http://haypo.developpez.com/article/halloc/

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Par défaut
    Salut Clad3,

    La gestion de la mémoire, tout un programme en C++
    Je n’utilisais aucun gestionnaire jusqu'à ce qu’il me soit confié
    De gros projets dans un cadre plus professionnel ou la tu ne dois pas te louper.
    Je me suis alors dit faut ci mettre et depuis je ne ferais machine arrière pour rien.

    A mes yeux il y a 2 outils indispensables :
    - le Gestionnaire de mémoire (surcharge de new, delete, new[] et delete[])
    - les pointeurs intelligents (donc plus de delete lol)

    Je précise tout de suite que je possède ma propre version pour chacun de ces outils
    Et que je ne peux donc pas te renseigner sur tel ou tel lib.

    Le gestionnaire de mémoire :
    - SUPER
    - Tu inclus dans tous tes fichiers un petit entete GESTIONNAIRE_MEMOIRE.h
    - Dans ton fichier principal (avec le main) tu
    - #define ACTIVE_GESTIONNAIRE_MEMOIRE

    Et c’est tout. Le reste est auto, et te sort en un fichier avec les fuites, libérations, et tout ce qui va avec.

    Bien entendu cette méthode est valable pour mon gestionnaire mais ca doit être un peu partout pareil et surtout tu vois la simplicité du truc.

    Une fois la version finale développé, tu remplace par :
    - #define DESACTIVE_GESTIONNAIRE_MEMOIRE

    Et voila une version optimisé (sans les tests donc).

    Les pointeurs intelligents :
    La j’avoue ne pas trop accrocher, j’ai mes propre pointeur intelligent, compatible Polymorphisme et STL mais ne gère pas les tableaux, mais tu les remplace par les vector
    Donc pas de problème de ce coté la.

    Le principal ennui est le remplacement des problèmes de new/delete par celui des
    Compatibilité. Par exemple tu souhaites faire un gestionnaire de ressources, alors tu dois utiliser un pointeur différent car map< string, PoiteurIntel<ressource> >, par exemple ne libère jamais car par tu as déjà ton compteur a 1.

    Et surtout tu te retrouve avec un code assez lourds avec des PoiteurIntel<XXX> partout, dans les définitions de méthodes, les déclarations, bref, tu ne doit plus avoir de * sous prétexte de mettre tes pointeurs dans le mur.

    Du coup je suis pas trop pour cet outil.

  4. #4
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Les gestionnaires de mémoire pour débugguer, blinder et valider la gestion manuelle de la mémoire, pourquoi pas.. Ils servent aussi pour optimiser (mise en oeuvre de pools de buffers).
    Par contre, je ne trouve pas que cela aide particulièrement à gérer la mémoire.

    Au contraire des pointeurs intelligents. Ces derniers correspondent à l'application du RAII à la gestion de la mémoire. Et le RAII, c'est l'idiome, qui en C++, permet de gérer simplement des ressources dans le contexte où des exceptions peuvent survenir. Le gestionnaire de mémoire n'aide en rien du tout sur ce point critique.

    La criticité du point ne correspond qu'à ma propre expérience. Au début le client teste l'outil dans les cas nominaux, puis il s'amuse à valider dans les cas à la noix (perte de réseau, plantage de process critiques à divers moments, réception de télémétrie corrompue, ...)
    Là, la gestion des exceptions a intérêt à être carrée. Et le RAII aide bien pour cela.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  5. #5
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Je ne sais pas trop ce que vous entendez par "gestionnaire de mémoire", mais au cas où ce ne soit pas ça, je voudrais juste signaler qu'il existe aussi des garbage collectors en C++.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  6. #6
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    J'ai repris la "définition" d'ash.ice.loky -> une couche qui détourne new/delete.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

Discussions similaires

  1. Crash aléatoires dans un programme quasi-totallement managé
    Par smyley dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 09/11/2007, 02h22
  2. Winform c# dans un programme C++ non managé
    Par bdurtaut dans le forum C++/CLI
    Réponses: 3
    Dernier message: 05/11/2007, 10h10
  3. [] Utiliser AVI d'une DLL dans mon programme
    Par seb.49 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 02/05/2003, 14h52
  4. [langage] Commande DOS dans un programme
    Par Jibees dans le forum Langage
    Réponses: 15
    Dernier message: 23/04/2003, 12h08

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