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 :

Allocation dynamique ou pas ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut Allocation dynamique ou pas ?
    Bonjour, le sujet a peut être été abordé mais je n'ai rien trouvé. Je suis en train de faire un projet avec une interface QT4, et je me pose la question suivante : qu'est-ce qui est le mieux entre une allocation dynamique et une déclaration "normale" ? sachant que de toute façon les objets seront tous créés au lancement du programme.
    Et si quelqu'un pouvait expliquer quelle est la différence concrètement en mémoire entre ces deux méthodes (avantages/inconvénients). Merci d'avance.

  2. #2
    Membre éclairé
    Avatar de Floréal
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    456
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 456
    Par défaut
    Je suppose que par "normale" tu veux dire "automatique".
    Alors Qt4 est un peu particulier en ce qui concerne la gestino de la mémoire, et je serai tenté de répondre "ça dépend".
    Si tes objets sont dérivées de la classe QObject, tu peux leur donner d'autres Objets (dérivant de QObject) comme parent. Avec Qt, lorsque le parent est détruit tous ses enfant le sont en même temps, donc dans ce cas là il vaut mieu utiliser des objets instanciés dynamiquement (avec le mot clef new), sans avoir besoin de les détruire avec un delete puisque Qt s'en chargera.
    Si tes objets ne dérivent pas de QObject tu peux les instancier en automatique, ils seront automatiquements détruits. Ou alors en dynamique mais il faudra que tu saches quand liberer la mémoire qui leur est alouée avec un delete.

  3. #3
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Alors déjà, j'instancie des classes que j'ai codées moi même, et pas des classes Qt, sauf les .h qui sortiront du Designer. Ensuite je connais la différence de codage entre l'automatique et le dynamique. La question n'est pas comment, mais plutôt pourquoi :)
    L'automatique fonctionnerait très bien dans mon cas. Au vu de ce que j'ai trouvé, l'automatique est plus efficace, mais je demandais un avis plus poussé.

    Y'a t il des avantages au niveau exécution à déclarer dynamiquement ou pas ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Y'a t il des avantages au niveau exécution à déclarer dynamiquement ou pas ?
    Rendre le programme plus lent, augmenter la probabilité d'erreurs dans la programmation, fuites mémoires, etc.

  5. #5
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par loufoque Voir le message
    Rendre le programme plus lent, augmenter la probabilité d'erreurs dans la programmation, fuites mémoires, etc.
    lol
    ben y as la possibilité d'utiliser une grande masse de données!!!

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    Citation Envoyé par loufoque Voir le message
    Rendre le programme plus lent, augmenter la probabilité d'erreurs dans la programmation, fuites mémoires, etc.
    Écrire plus de code, aussi.

  7. #7
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Sylvain Togni Voir le message
    Écrire plus de code, aussi.
    vous été méchant...

    Il y as aussi la possibilité d'avoir des class initialisé a l'exécution et non a la compilation. Je ne me rappel plus ou j'avais eu le problème avec QT.... dsl j'ai pas d'exemple

  8. #8
    Membre expérimenté Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Par défaut
    Citation Envoyé par loufoque Voir le message
    Rendre le programme plus lent, augmenter la probabilité d'erreurs dans la programmation, fuites mémoires, etc.
    Mon dieu ....

    Au choix :

    Soit on parle des globales, auquel cas pour autant que je me souvienne, les declarer sans pointeur est une idée des plus mauvais, puisqu'on ne controle strictement rien point de vue de quand on les crée, ni quel ordre, ni rien.

    Soit on parle des locales, auquel cas, obligatoirement, tu risque pas de les stoquer longtemps.

    Quand aux fuites mémoires, au choix, soit tu apprends a programmer proprement, soit tu utilise des pointeurs intelligents qui s'occuperont de ça a ta place.

  9. #9
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Par défaut
    Y'a t il des avantages au niveau exécution à déclarer dynamiquement ou pas ?
    Ben... ça me parait évident que dans certains cas tu n'as tout simplement pas le choix, principalement quand le fait de déclarer ou pas les données en question (ou combien en déclarer dans le cas de tableau) dépends de paramettres extérieurs ...

    Si t'es pas obligé par la nature de ton application d'avoir a rendre certaines données dynamiques, alors pas besoin de le faire.

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

Discussions similaires

  1. Allocation dynamique ne marche pas
    Par IsraGab dans le forum C
    Réponses: 21
    Dernier message: 12/09/2012, 22h32
  2. Allocation dynamique de classe qui marche pas
    Par Guillaume602 dans le forum C++
    Réponses: 8
    Dernier message: 11/07/2006, 10h55
  3. Allocation dynamique de structures
    Par fr_knoxville dans le forum C
    Réponses: 8
    Dernier message: 06/05/2003, 21h59
  4. Allocation dynamique de mémoire en asm
    Par narmataru dans le forum Assembleur
    Réponses: 7
    Dernier message: 17/12/2002, 22h31
  5. Réponses: 4
    Dernier message: 03/12/2002, 16h47

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