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

Qt Discussion :

Allocation sur la pile d'objet QOBJECT dans le .h


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    Salut,

    suite à la lecture d'une entrée de la FAQ concernant l'allocation des objets QT, je me demandais si l'allocation d'une donnée membre sur la pile plutôt que sous la forme d'un pointeur allouer dans le construteur pouvait poser problème ou si au contraire cela cette pratique était tout à fait correcte.

    Merci.


  2. #2
    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 guillaume07 Voir le message
    Salut,

    suite à la lecture d'une entrée de la FAQ concernant l'allocation des objets QT, je me demandais si l'allocation d'une donnée membre sur la pile plutôt que sous la forme d'un pointeur allouer dans le construteur pouvait poser problème ou si au contraire cela cette pratique était tout à fait correcte.

    Merci.

    c'est a dire?
    tu peut faire un petit code pour illustrer ta question?

    Un membre, s'il n'est pas un pointeur et alloué avec la classe. Donc ce n'est pas forcement la pile.

    Les problèmes qu'il peut y a avoir avec un QObject utilisé sans pointeur :
    1- QWidget : a cause du reparantage automatique, il peut être détruit alors que c'est à la classe de le faire. Il faut donc utiliser des pointeurs.
    2- s'ils sont créé en membre static ou initialisé avant QApplication, ils poseront des problèmes.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    1- QWidget : a cause du reparantage automatique, il peut être détruit alors que c'est à la classe de le faire. Il faut donc utiliser des pointeurs.

    Est-ce que ce cas peut se produire lorsque le membre donné alloué via l'instance de l'objet sur la pile ( ok ça n'est pas forcément le cas, mais prenons le cas ou c'est sur la pile) est déclaré en tant que membre basique , et non en tant que pointeur ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class A
     {
    QWidget s;
     };
     
    main(){ A a;}

    EDIT : bon je viens de mettre le nez dans les sources de QT, c'est fréquement utilisé, dans ce cas j'ai du mal à voir dans quel cas on peut tomber dans le piège que la FAQ indique, car je trouve l'exemple de la FAQ pas très pertinente , sauf si je me trompe, on a rarement du code comme ça dans une appli

Discussions similaires

  1. Sur l'utilité d'une allocation sur la pile
    Par deubelte dans le forum C++
    Réponses: 7
    Dernier message: 31/08/2010, 11h41
  2. Réponses: 0
    Dernier message: 11/11/2008, 19h52
  3. Réponses: 0
    Dernier message: 07/08/2008, 14h41
  4. Réponses: 0
    Dernier message: 23/06/2008, 16h58
  5. Créer des objets sur la pile ?
    Par Cornell dans le forum Langage
    Réponses: 8
    Dernier message: 03/03/2003, 11h47

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