C++; G++, QT4.5: pointeurs, allocation de tableaux et accès par [..]
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

C++; G++, QT4.5: pointeurs, allocation de tableaux et accès par [..]



  1. #1
    Bounoume

    C++; G++, QT4.5: pointeurs, allocation de tableaux et accès par [..]


    ------

    bonjour,
    je suis bloqué dans ma tentative d' allouer conditionnellement de la mémoire pour un tableau.....

    Au départ: un objet , avec dans ses données, un pointeur de type 'bidule' (entier, ou structure déjà déclarée, ici appelée step_mark)

    La structure déclarée a comme éléments (entre autres)
    Code:
     step_mark
    {Objet * this_analogue;
     int length;
     .../....;}..
    Dans l'en-tête de l'objet
    Code:
    protected:   ..../.....
     step_mark *  bidule; ...../.....
    Dans une fonction de l' objet, une condition if() contient
    Code:
    if(truc)
    { step_marks=new step_mark[MAX_MARKS]; 
                                                bidule =new step_mark[MAX_MARKS];
                                                bidule[0].length=330;
                                                bidule[1].this_analogue=this;
                                                bidule[1].length=1;
                                                bidule[2].this_analogue=this;
                                                bidule[2].length=2;
                                                bidule[2].this_analogue=this;
                                                bidule[3].length=3;
                                                bidule[3].this_analogue=this;
                                               A=bidule[0].length;  // ==330 ? oui
                                                i= bidule[2].length; // ==2 ? oui !!
                                               C=bidule[1].length;   //==1 ? oui !!!
                                                };  .
    Le code compile bien, et en débogage, une fois le code exécuté, quand j'inspecte les valeurs de A,i,C ... le débogueur indique les valeurs attendues.

    MAIS

    ..... dans d'autres méandres du code que j'ai écrit, il me semble que des valeurs de la structure ne sont plus les valeurs initialisées (ou modifiées de façon volontaire): d'où erreurs inadmissibles.
    ..... le débogueur est incapable d'accéder au tableau: il fait comme si *bidule pointait sur une structure simple, alors que ça devrait être un tableau (statique ?) de dimension MAX_MARKS == 300 !
    Code:
    		...diverses variables de l'Objet.....
    		bidule	@0x7fffd800d2d0	step_mark
    			after	0x0	nodes *       [[[normal: je n'ai pas initialisé ça ! ]]]
    			before	0x0	nodes *         [[[normal: je n'ai pas initialisé ça ! ]]]
    			initial_tick	0	long
    			length	330	int
    			previous_step_trigger	0x0	nodes *   [[[normal: je n'ai pas initialisé ça ! ]]]
    			this_analogue	0x0	nodes *    [[[: je n'ai pas initialisé ça à la ligne 0 du tableau: normal pour bidule[0]   ]]]
    			trip	0	int    [[[normal: je n'ai pas initialisé ça ! ]]]
    		... autres variables de l'objet:
    dimension_suivants	1	int   etc.....
    
    .
    Alors ma question:
    Les déclarations initiales sont-elles erronées,ou bien est-ce simplement le débogueur qui n'est pas conçu pour faire les conversion?

    Et dans ce cas, dois-je chercher ailleurs que dans cette portion de code la cause du bug?
    Merci d'avance

    -----
    Dernière modification par JPL ; 12/08/2019 à 18h09. Motif: Remplacement de la balise Quote par Code
    rien ne sert de penser, il faut réfléchir avant.... (Pierre Dac...)

  2. #2
    Spazi

    Re : C++; G++, QT4.5: pointeurs, allocation de tableaux et accès par [..]

    Votre "bidule" est un pointeur sur "step_mark", donc le debugger vous affiche le (premier) step_mark à la zone pointée par bidule. Rien d'anormal.

  3. #3
    Bounoume

    Re : C++; G++, QT4.5: pointeurs, allocation de tableaux et accès par [..]

    Bonne nouvelle.... L'erreur n'est pas là......
    mais simplement debugger ne veut me montrer que bidule[0] ....

    Alors que si j'avais déclaré (d'emblée, dans Objet...., donc en augmentant souvent inutilement la mémoire allouée à Objet....)
    Code:
       
    class Objet {......../etc........
    bidule step_mark[300]; 
    ........../etc.......... }
    debugger m'aurait permis d' inspecter tout le tableau depuis bidule[0] jusqu'à bidule[299] .......
    C'est bien ça?
    rien ne sert de penser, il faut réfléchir avant.... (Pierre Dac...)

  4. #4
    Spazi

    Re : C++; G++, QT4.5: pointeurs, allocation de tableaux et accès par [..]

    En gros, c'est ça oui.

    Peut-être pouvez vous essayer en changeant le type de bidule de "step_mark *" à "step_mark []".
    En théorie, c'est la même chose mais peut-être le debugger comprend-il le côté "tableau" de la zone pointée.
    Je ne fais plus de C++ depuis longtemps, désolé.

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : C++; G++, QT4.5: pointeurs, allocation de tableaux et accès par [..]

    Non, ça ne changera rien. La différence d'écriture est ce que d'autres appellent un "sucre syntaxique".

  7. #6
    Bounoume

    Re : C++; G++, QT4.5: pointeurs, allocation de tableaux et accès par [..]

    Merci à vous deux. Problème résolu.
    cordialement,
    HP
    rien ne sert de penser, il faut réfléchir avant.... (Pierre Dac...)

Discussions similaires

  1. Pointeurs et tableaux de structures
    Par invitecf55a3b7 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 06/12/2017, 14h10
  2. pointeurs
    Par invitea4c2cc0f dans le forum Programmation et langages, Algorithmique
    Réponses: 13
    Dernier message: 05/07/2016, 10h44
  3. Quel est le rapport entre les pointeurs et les tableaux ?
    Par invitefacf0d25 dans le forum Programmation et langages, Algorithmique
    Réponses: 57
    Dernier message: 09/10/2012, 11h34
  4. Pointeurs
    Par invite979fcc20 dans le forum Programmation et langages, Algorithmique
    Réponses: 7
    Dernier message: 30/09/2011, 02h05
  5. tableau et pointeurs c++
    Par invite0422bf25 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 11/12/2009, 18h50