Problème de pointeur this, je capte plus rien :??: [C++] - C++ - Programmation
Marsh Posté le 02-07-2002 à 09:25:58
spas bien les screenshots en jpeg
sinon c'est vrai que le problème est bizarre
Marsh Posté le 02-07-2002 à 09:28:38
Attend je les refais en bmp
Bon ben si quelqu'un a une idee c'est le moment ou jamais
Marsh Posté le 02-07-2002 à 09:29:32
C pas si bizzard que ça à mon avis, qu'est ce que tu appel programme principale? C une méthode d'un objet, ou la fonction winmain (ou main)?
Marsh Posté le 02-07-2002 à 09:30:00
Godbout a écrit a écrit : Attend je les refais en bmp |
bhen non, PNG ou GIF, c'est moins gros comme fichier et au moins on se tappe pas une compression dégeux.
Marsh Posté le 02-07-2002 à 09:32:01
letoII a écrit a écrit : C pas si bizzard que ça à mon avis, qu'est ce que tu appel programme principale? C une méthode d'un objet, ou la fonction winmain (ou main)? |
Quand je dis programme principal je me suis mal exprime en fait, c'est une methode d'un objet effectivement.
Marsh Posté le 02-07-2002 à 09:32:24
C quoi le type m_QuotationHeader ?
Marsh Posté le 02-07-2002 à 09:32:37
antp a écrit a écrit : bhen non, PNG ou GIF, c'est moins gros comme fichier et au moins on se tappe pas une compression dégeux. |
Je fais ce que je peux j'ai que paint de merde, alors j'suis deja bien content de pouvoir enregistrer en jpg, pis bon du code que ce soit degueu ou pas je pense pas que ca change grand chose.
Marsh Posté le 02-07-2002 à 09:33:18
letoII a écrit a écrit : C quoi le type m_QuotationHeader ? |
C'est une struct, avec principalement une chaine de 256 caracteres comme variable.
Marsh Posté le 02-07-2002 à 09:34:24
Ce serait pas parce que tu es arrivé en fin de fichier?
Marsh Posté le 02-07-2002 à 09:36:37
letoII a écrit a écrit : Ce serait pas parce que tu es arrivé en fin de fichier? |
nan c'est sur que ca vient pas de ca.
En plus je viens de verifier.
Marsh Posté le 02-07-2002 à 09:45:38
C peut êtr le débugger qui se chie dessus et ton objet n'a rien
Marsh Posté le 02-07-2002 à 09:45:44
Je viens d'essayer sur un autre pc ca marche
Marsh Posté le 02-07-2002 à 09:48:11
et ? que se passe-t-il si tu commentes le code de la fonction ?
ce genre de code
while (strncmp) (qui au passage pourrait très bien s'écrire while (buffer[count] != ';')
est infâme et ne checke même pas l'overflow de indexTemp.
au hasard : ton code est bancal au possible, pas seulement ici, écrit n'importe où n'importe quoi dans la mémoire, donc boum.
Marsh Posté le 02-07-2002 à 09:49:50
youdontcare a écrit a écrit : et ? que se passe-t-il si tu commentes le code de la fonction ? ce genre de code while (strncmp) (qui au passage pourrait très bien s'écrire while (buffer[count] != ';') est infâme et ne checke même pas l'overflow de indexTemp. au hasard : ton code est bancal au possible, pas seulement ici, écrit n'importe où n'importe quoi dans la mémoire, donc boum. |
J'suis desole c'etaient mes premiers programmes
edit: ca marche sur un autre pc, et je viens de recompiler en release et ca marche aussi.
Marsh Posté le 02-07-2002 à 09:50:16
Godbout a écrit a écrit : Je viens d'essayer sur un autre pc ca marche |
miracle, deux pcs différents allouent les objets dans des endroits différents. ton programme fait toujours n'importe quoi n'importe où, sauf que le n'importe où ne crashe pas le second.
Marsh Posté le 02-07-2002 à 09:51:29
youdontcare a écrit a écrit : miracle, deux pcs différents allouent les objets dans des endroits différents. ton programme fait toujours n'importe quoi n'importe où, sauf que le n'importe où ne crashe pas le second. |
Comment ca il fait n'importe koi n'importe ou ??
Pourtant j'alloue toujours de la mem, je fais gaffe.
edit: et en release ca marche maintenant.
Marsh Posté le 02-07-2002 à 09:52:54
tu devrais passer par le memory inspector. tu mets l'adresse de this dedans, tu debuggues pas à pas, dès que tu vois du rouge tu sauras d'où vient l'erreur.
Marsh Posté le 02-07-2002 à 10:11:57
A mon avis tu depasse la capacité de tes chaines...
tu ecrit n'importe ou en memoire, et tu ecrase eventuellement le this... ceci expliquerait aussi le comportement aléatoire...
Marsh Posté le 02-07-2002 à 11:36:44
youdontcare a écrit a écrit : tu devrais passer par le memory inspector. tu mets l'adresse de this dedans, tu debuggues pas à pas, dès que tu vois du rouge tu sauras d'où vient l'erreur. |
connais pas ca, j'vais y jeter un oeil, merci.
Marsh Posté le 02-07-2002 à 11:37:06
BENB a écrit a écrit : A mon avis tu depasse la capacité de tes chaines... tu ecrit n'importe ou en memoire, et tu ecrase eventuellement le this... ceci expliquerait aussi le comportement aléatoire... |
Je vais y jeter un oeil aussi, mais ca m'etonnerait que ca vienne de la.
edit:
Je fais un char buf[255] = {0};
et dans la fonction je fais un fgets(..., 1999,...
Marsh Posté le 02-07-2002 à 12:27:50
youdontcare a écrit a écrit : tu devrais passer par le memory inspector. tu mets l'adresse de this dedans, tu debuggues pas à pas, dès que tu vois du rouge tu sauras d'où vient l'erreur. |
J'ai pas trop capte comment ca marchait.
Marsh Posté le 02-07-2002 à 12:48:39
Si ça marche sur un autre PC, c'est quasiment certain que ça vient des allocations mémoires. Puique tu programmes en C++, pourquoi fais tu des malloc ? (c'est du C)
Marsh Posté le 02-07-2002 à 13:01:35
Godbout a écrit a écrit : J'ai pas trop capte comment ca marchait. |
tu rentres une adresse mémoire et ça affiche son contenu. entre plusieurs steps de debug, si le contenu change, le changement est affiché en rouge : pratique pour voir où et quand ça plante.
tu peux donc soit inspecter 'this' (voir si l'objet est effacé) soit inspecter aux alentours de '&this' (voir si l'espace qui le contient qui est effacé).
Marsh Posté le 02-07-2002 à 13:23:12
Godbout a écrit a écrit : J'ai pas trop capte comment ca marchait. |
Tu peut aussi mettre un point d'arret sur une modification de la valeur d'une variable, this et *this...
comme cela tu t'arreteras là ou tu fais ton dépassement, a moins que Visual ne plante avant...
Marsh Posté le 02-07-2002 à 13:34:34
Smaragdus a écrit a écrit : Si ça marche sur un autre PC, c'est quasiment certain que ça vient des allocations mémoires. Puique tu programmes en C++, pourquoi fais tu des malloc ? (c'est du C) |
J'ai dit un peu plus haut que c'etait un de mes premiers programmes donc j'avais (et j'ai encore) un peu de mal
Marsh Posté le 02-07-2002 à 13:36:06
youdontcare a écrit a écrit : tu rentres une adresse mémoire et ça affiche son contenu. entre plusieurs steps de debug, si le contenu change, le changement est affiché en rouge : pratique pour voir où et quand ça plante. tu peux donc soit inspecter 'this' (voir si l'objet est effacé) soit inspecter aux alentours de '&this' (voir si l'espace qui le contient qui est effacé). |
Ok ca a l'air pas mal pratique. Je vais me pencher sur la question merci.
Marsh Posté le 02-07-2002 à 13:36:49
BENB a écrit a écrit : Tu peut aussi mettre un point d'arret sur une modification de la valeur d'une variable, this et *this... comme cela tu t'arreteras là ou tu fais ton dépassement, a moins que Visual ne plante avant... |
ok.
Visual n'a pas encore plante, mais si je continue comme ca ca devrait pas tarder.
Marsh Posté le 03-07-2002 à 15:53:40
Godbout a écrit a écrit : ok. Visual n'a pas encore plante, mais si je continue comme ca ca devrait pas tarder. |
La derniere fois que j'ai fais ca (c'était avec visual 5) il a alloué toute la memoire de la machine
après il me demandait de fermer qq fenetres afin de pouvoir liberer de la memoire, mais il n'en avait plus suffisement pour m'en montrer une... situation bloquée... RESET...
Mais je suis mauvaise langue Visual n'a pas explicitement planté !
Marsh Posté le 02-07-2002 à 09:23:57
Desole de vous faire chier encore mais la je capte pas
Je prefere tout mettre en image parce que j'arriverai pas a expliquer le probleme.
Je commence par rentrer dans ma fonction :
Jusque la tout va bien
J'arrive au niveau du return
La aussi c'est bon
Et la je retourne donc dans le programme principal
Le this est completement foiré
$
Ca fait deux jours que je cherche j'arrive pas a capter ou est le pb
J'ai tout rebuilde, cree un nouveau projet, etc...
---------------
Super.