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 :

QString et allocation dynamique de mémoire


Sujet :

Qt

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Points : 8
    Points
    8
    Par défaut QString et allocation dynamique de mémoire
    Bonjour,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    typedef struct
    {
    int a;
    int b;
    int c;
    QString s;
     
    } structure_t;
     
    static structure_t *tableau = NULL;
     
    /****/
     
    tableau = malloc(8 * sizeof(structure_t));
     
    tableau[0].a = 1;
    tableau[0].s = "toto";
    Avec une allocation dynamique comme ci-dessus la dernière ligne me retourne un segmentation_fault.

    Alors qu'avec une allocation statique comme ci-dessous, ça passe sans problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static structure_t tableau[0];
    Où est mon erreur ?
    Merci pour vos réponses...

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 397
    Points : 698
    Points
    698
    Par défaut
    La première et probablement plus grosse erreur est de faire des malloc en C++. D'ailleurs, de la façon où tu déclares une structure, je suppose que tu connais plus le C que le C++ ?

    Bref, le mieux serait peut être de reprendre un cours de C++ et d'oublier le C si tu veux utiliser le C++ et Qt.

    Si tu veux un tableau dynamique : QVector ou std::vector.
    Pour créer un objet dynamique : en premier les pointeurs intelligents (QSharedPointer, QScopedPointer, std::shared_ptr, std_unique_ptr, std::make_shared, std::make_unique...). Si c'est pas possible (conflit avec le système de destruction parent-enfants de Qt) : pointeur nus avec new.
    Dans tous les cas, pas de malloc

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Oui, effectivement je viens du C
    Je débute presque en C++...

    J'ai donc remplacé mon tableau dynamique par un QVector, et ça marche niquel.
    C'est tout aussi facile à implémenter, voir plus...

    Merci

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

Discussions similaires

  1. probleme d'allocation dynamique de mémoire
    Par Blo0d4x3 dans le forum C
    Réponses: 2
    Dernier message: 13/03/2007, 08h53
  2. Allocation dynamique de mémoire : Limitations ?
    Par rulianf dans le forum C++
    Réponses: 5
    Dernier message: 22/03/2006, 18h03
  3. Allocation dynamique de mémoire
    Par cd090580 dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 12/11/2005, 12h17
  4. [VC++/ASM] Allocation dynamique de mémoire ?
    Par Magus (Dave) dans le forum x86 32-bits / 64-bits
    Réponses: 7
    Dernier message: 21/12/2004, 16h05
  5. Allocation dynamique de mémoire en asm
    Par narmataru dans le forum Assembleur
    Réponses: 7
    Dernier message: 17/12/2002, 23h31

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