Bonsoir,
puisque tu es sous VS, utilise un data-breakpoint et tu seras fixé.
Bonsoir,
puisque tu es sous VS, utilise un data-breakpoint et tu seras fixé.
on peut pas avec le code fournit savoir d'où vient le probleme.
1) Déjà parce que _resolutionExacte, on sait pas si c'est un fils de Relocation où un Relocation. et tout les autres champs de Fenetre, on sait pas c'est quoi leur type.
Donc du coup, ca se fait _resolutionExacte ben il définit setDonnées, dont on ne connait pas l'implémentation, et il fait pointer _donnees vers une zone pourrie.
L'appelant suivant qui est de fait de type Relocation (puisque tu as montré le code et que c'est dans Relocation::setDonnees) ben il a un comportement aléatoire parce que le pointeur est invalide.
2) On ne sait pas non plus ce que fait Donnees::operator= ca se fait ben il modifie l'attribut de l'instance passée en paramètre (bon j'en doute quand même)
Je parie qu'il y a un problème dans Donnees::operator=.
Sinon, ça peut aussi être le debugger qui déconne si tu es sous un Windows 64 bits et que ton programme est en 32 bits.
[Edit : La discussion ayant suivie cette remarque a été déplacée là]
La méthode 'ouvrirInstance' est un slot appelée lors de l'appuie sur un boutton. Mes objets non rien avoir entre eux. Je veux juste les faire pointer sur l'objet 'Donnees' qui contient toutes les données de mon pb.
Je n'ai aucun constructeur de recopie ou de surcharge de =.
C'est juste une copie d'un pointeur.
PS : pour l'instant je met un attribut 'int a' inutile en première position
@Médinoc : J'avais pensé à ça aussi, mais il passe pas un pointeur et il me semble pas qu'on puisse redéfinir l'opérateur des types de bases (dont le pointeur)
Mets un buffer d'un méga
Code : Sélectionner tout - Visualiser dans une fenêtre à part PS : pour l'instant je met un attribut 'int a' inutile en première position
Plus sérieusement, si c'est comme par hasard le premier attribut de ta classe, c'est qu'une autre partie de ton code fait un dépassement en écrivant (pas trop dur de vérifier si c'est un artefact de debug ou pas: simplement logger la valeur de l'attribut avant et après, et voir si tu as le changement en exécutant normalement hors débugger) Mettre un attribut bidon ne te protègera de cette erreur que pour mieux faire boum une autre fois à la suite d'un autre changement apparemment anodin...
Et si tu avais un recouvrement pirate entre l'emplacement du pointeur que tu initialises et la plage adressée par ton pointeur? D'où mes questions suivantes:
1) tu penses la valeur de l'attribut "après" affectation de pointeur invalide, mais est tu sur que la valeur initiale l'est?
2) est tu sûr de la validité de ton pointeur inDonnee, qui semble pointer sur ta classe utilisatrice au lieu de vraiement pointer sur tes données?
EDIT:
3) à l'inverse, es-tu sûr de ton pointeur pour la classe Relocation?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager