[C++] Probleme : Heap corruption detected

Probleme : Heap corruption detected [C++] - C++ - Programmation

Marsh Posté le 05-01-2007 à 19:13:17    

Bonjour,
 
Depuis hier j'ai un problème lorsque je lance mon programme en C++ (Qt,OpenGl).
J'arrive à lancer mon appli et elle marche plutôt bien mais lorsque je la referme, un message d'erreur apparait :  
 
Program: ....
 
Heap CORRUPTION DETECTED: after Normal block (#machin) at adressemachin CRT detected that the application wrote to memory after end of heap buffer.
 
Je précise que je travail sous visual 2005 et que le code que je compile est une base d'un tutoriel trolltech que je ne comprend pas en détail.
Bref j'ai quand même réussi à trouver l'erreur, elle vient d'une variable que je déclare dans un .h, un pov int de mer**...
Lorsque je le met en commentaire, ca tourne, si je le décommente ca ne marche plus.
Je n'utilise nul part cette variable et je ne comprend pas que ca puisse générer une erreur.
 
Voici le code :  
 

Code :
  1. #ifndef GLWIDGET_H
  2. #define GLWIDGET_H
  3. #include <QGLWidget>
  4. class GLWidget : public QGLWidget
  5. {
  6.      Q_OBJECT
  7. public:
  8.      GLWidget(QWidget *parent = 0);
  9.      ~GLWidget();
  10.      QSize minimumSizeHint() const;
  11.      QSize sizeHint() const;
  12. public slots:
  13.      void setXRotation(double angle);
  14.      void setYRotation(double angle);
  15.      void setZRotation(double angle);
  16. signals:
  17.      void xRotationChanged(double angle);
  18.      void yRotationChanged(double angle);
  19.      void zRotationChanged(double angle);
  20. protected:
  21.      void initializeGL();
  22.      void paintGL();
  23.      void resizeGL(int width, int height);
  24.      void mousePressEvent(QMouseEvent *event);
  25.      void mouseMoveEvent(QMouseEvent *event);
  26. private:
  27.      GLuint makeObject();
  28.      void quad(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2,
  29.                GLdouble x3, GLdouble y3, GLdouble x4, GLdouble y4);
  30.      void extrude(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
  31.      GLuint object;
  32.  int xRot;
  33.      int yRot;
  34.      int zRot;
  35.  //int lavariablequifaitchier;
  36.      QPoint lastPos;
  37.      QColor trolltechGreen;
  38.      QColor trolltechPurple;
  39. };
  40. #endif


 
Si quelqu'un a une idée je suis preneur.
 
Merci

Reply

Marsh Posté le 05-01-2007 à 19:13:17   

Reply

Marsh Posté le 05-01-2007 à 21:27:54    

Salut,
Plutôt bizarre comme crash @_@
A priori, j'ai la même config que toi; j'essaie en rentrant chez moi, on sera vite fixé.

Reply

Marsh Posté le 05-01-2007 à 21:44:49    

Ah super sympa merci ...

Reply

Marsh Posté le 05-01-2007 à 23:36:43    

en plus c'est génial, t'as pas posté de code ...


Message édité par Taz le 05-01-2007 à 23:36:54
Reply

Marsh Posté le 05-01-2007 à 23:51:27    

http://charlyr.free.fr/hfr/

 

Le projet visual 2005.
J'ai posté le .h où la variable en question me pose problème.

 


Message édité par tabasc0 le 05-01-2007 à 23:53:19
Reply

Marsh Posté le 06-01-2007 à 00:09:27    

Bah écoute, ça marche très bien chez moi en ajoutant un int exactement où tu l'as fait, sans le mettre, bref, t'as quelque chose qui foire dans la description de ton projet.
Vu que tu utilises la version commerciale, je peux pas t'aider. Essaie tout de même en mettant tes sources dans un autre répertoire (uniquement les .cpp, .h et .ui), et dans la console de VC tu saisis qmake -project. Dans le .pro généré tu ajoutes une ligne QT += opengl juste avant la ligne # input (bien que je doute que ça change grand chose que tu le mettes un peu avant :)).
Ensuite, toujours dans la console, qmake && nmake. Ensuite tu lances ce qu'il te sort dans le sous-rep debug, et tu nous dis s'il y a toujours le crash.
 
Par contre, quand tu postes du code, ne poste *que* le code et les fichiers descriptif du projet, pas les infos de debug ça réduit bien le poids.

Reply

Marsh Posté le 06-01-2007 à 00:19:09    

Ok je te remercie, je vais voir ca.

Reply

Marsh Posté le 06-01-2007 à 00:37:53    

Bon, il n'y a rien dans le rep debug mais dans le rep release, j'ai lancé l'executable et il me dit qu'il ne trouve pas QtOpenGL4.dll.  
Voilà autre chose...

Reply

Marsh Posté le 06-01-2007 à 00:39:47    

Installation foireuse... Tu as bien mis <Qt>\bin dans ton path?

Reply

Marsh Posté le 06-01-2007 à 00:43:44    

Hum... Non j'ai rien fait de plus que de cliquer sur "suivant".
Je regarde ça.

Reply

Marsh Posté le 06-01-2007 à 00:43:44   

Reply

Marsh Posté le 06-01-2007 à 01:00:52    

Bon ca ne change rien, je l'ai rajouté dans le Path.
Et j'ai rebooté.
 
C'est normal que dans le lib les fichiers sont des dll.manifest ??
Bon aucune appli Qt ne fonctionne alors qu'avant avec la version d'évaluation ca fonctionnait...
Je vais peut être le réinstaller voir...


Message édité par tabasc0 le 06-01-2007 à 01:09:07
Reply

Marsh Posté le 06-01-2007 à 11:41:37    

Bon j'ai reinstallé, et j'ai fait ce que tu m'as dis.
Ca marche comme sur des roulettes...
J'ai du mal à comprendre d'où venait ce problème...
En tout cas merci beaucoup IrmatDen d'avoir pris la peine de compiler mon truc.
 

Reply

Sujets relatifs:

Leave a Replay

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