[C++] Problème de pointeur this, je capte plus rien :??:

Problème de pointeur this, je capte plus rien :??: [C++] - C++ - Programmation

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 :
 
http://site.voila.fr/godbout/this1.jpg
 
Jusque la tout va bien  
 
http://site.voila.fr/godbout/this11.jpg
 
 
J'arrive au niveau du return  
 
http://site.voila.fr/godbout/this2.jpg
 
La aussi c'est bon
 
http://site.voila.fr/godbout/this22.jpg
 
Et la je retourne donc dans le programme principal
 
http://site.voila.fr/godbout/this3.jpg
 
Le this est completement foiré :??:
 
http://site.voila.fr/godbout/this33.jpg$
 
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.
Reply

Marsh Posté le 02-07-2002 à 09:23:57   

Reply

Marsh Posté le 02-07-2002 à 09:25:58    

spas bien les screenshots en jpeg :non:
sinon c'est vrai que le problème est bizarre :heink:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 02-07-2002 à 09:28:38    

Attend je les refais en bmp :sarcastic: :D
Bon ben si quelqu'un a une idee c'est le moment ou jamais :/


---------------
Super.
Reply

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)?


---------------
Le Tyran
Reply

Marsh Posté le 02-07-2002 à 09:30:00    

Godbout a écrit a écrit :

Attend je les refais en bmp :sarcastic: :D




 
bhen non, PNG ou GIF, c'est moins gros comme fichier et au moins on se tappe pas une compression dégeux.


Message édité par antp le 02-07-2002 à 09:30:23

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

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.
 
 


---------------
Super.
Reply

Marsh Posté le 02-07-2002 à 09:32:24    

C quoi le type m_QuotationHeader ?


---------------
Le Tyran
Reply

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.


---------------
Super.
Reply

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.


---------------
Super.
Reply

Marsh Posté le 02-07-2002 à 09:34:24    

Ce serait pas parce que tu es arrivé en fin de fichier?


Message édité par LetoII le 02-07-2002 à 09:34:45

---------------
Le Tyran
Reply

Marsh Posté le 02-07-2002 à 09:34:24   

Reply

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.


---------------
Super.
Reply

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 :D


---------------
Le Tyran
Reply

Marsh Posté le 02-07-2002 à 09:45:44    

Je viens d'essayer sur un autre pc ca marche :heink:


---------------
Super.
Reply

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.

Reply

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 [:joce]
 
edit: ca marche sur un autre pc, et je viens de recompiler en release et ca marche aussi.


Message édité par godbout le 02-07-2002 à 09:50:38

---------------
Super.
Reply

Marsh Posté le 02-07-2002 à 09:50:16    

Godbout a écrit a écrit :

Je viens d'essayer sur un autre pc ca marche :heink:


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.

Reply

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.


Message édité par godbout le 02-07-2002 à 09:51:53

---------------
Super.
Reply

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.

Reply

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...

Reply

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.


---------------
Super.
Reply

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: [:nofret]
 
Je fais un char buf[255] = {0};
et dans la fonction je fais un fgets(..., 1999,...
:sarcastic:


Message édité par godbout le 02-07-2002 à 11:43:45

---------------
Super.
Reply

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.


Message édité par godbout le 02-07-2002 à 12:28:21

---------------
Super.
Reply

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)

Reply

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é).


Message édité par youdontcare le 02-07-2002 à 13:03:02
Reply

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...

Reply

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 ;)


---------------
Super.
Reply

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.


---------------
Super.
Reply

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. :jap:
Visual n'a pas encore plante, mais si je continue comme ca ca devrait pas tarder.


---------------
Super.
Reply

Marsh Posté le 03-07-2002 à 15:53:40    

Godbout a écrit a écrit :

 
 
ok. :jap:
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 :D
 
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é !

Reply

Marsh Posté le 03-07-2002 à 15:56:23    

[:ddr555]


---------------
Super.
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed