 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Olivier Guest
|
Posted: Fri May 06, 2005 3:44 pm Post subject: Erreur d'application |
|
|
Bonjour,
Je suis en train de développer une application avec Visual C++ et lorsque ma
classe View va modifier la valeur d'une variable dans une classe CObject
j'ai le message d'erreur suivant :
L'instruction à "0x00402163" emploie l'adresse mémoire "0xcccccce4". La
mémoire ne peut pas être "written".
Kelkun a une idée de ce que ça peut être ?
Cordialement,
Olivier
|
|
| Back to top |
|
 |
Fabien LE LEZ Guest
|
Posted: Fri May 06, 2005 4:26 pm Post subject: Re: Erreur d'application |
|
|
On Fri, 6 May 2005 17:44:04 +0200, "Olivier" <ope (AT) club-internet (DOT) fr>:
| Quote: | L'instruction à "0x00402163" emploie l'adresse mémoire "0xcccccce4". La
mémoire ne peut pas être "written".
|
À vue de nez, l'erreur peut provenir d'à peu près n'importe où. Essaie
d'isoler le code qui déconne ; si ça vient d'un truc spécifique
Windows (comme le début de ton message semble le suggérer), cf
fr.comp.os.ms-windows.programmation.
Ça s'écrit "quelqu'un".
--
Le grand site de la philosophie animale : <http://perso.edulang.com/philo/>
|
|
| Back to top |
|
 |
Pierre THIERRY Guest
|
Posted: Fri May 06, 2005 6:17 pm Post subject: Re: Erreur d'application |
|
|
Le Fri, 06 May 2005 17:44:04 +0200, Olivier a écrit :
| Quote: | j'ai le message d'erreur suivant :
L'instruction à "0x00402163" emploie l'adresse mémoire "0xcccccce4".
La mémoire ne peut pas être "written".
Kelkun a une idée de ce que ça peut être ?
|
Un message d'erreur complètement naze ?
Naïvement,
Nowhere man
--
[email]nowhere.man (AT) levallois (DOT) eu.org[/email]
OpenPGP 0xD9D50D8A
|
|
| Back to top |
|
 |
Olivier Guest
|
Posted: Sat May 07, 2005 6:12 am Post subject: Re: Erreur d'application |
|
|
J'ai isolé le code qui plante de la maniere suivante :
void CSite::SetEchelle(int Echelle)
{
CString strTxt;
strTxt.Format("Echelle = %d",Echelle);
AfxMessageBox(strTxt);
m_iEchelle = Echelle;
strTxt.Format("Echelle 2 = %d",Echelle);
AfxMessageBox(strTxt);
}
Au changement d'échelle, j'ai bien le premier MessageBox qui s'affiche avec
la bonne valeur, mais dès que je clique sur OK -> plantage.
Donc ce qui fait planter c'est : m_iEchelle = Echelle;
Je ne comprends pas...
"Fabien LE LEZ" <gramster (AT) gramster (DOT) com> a écrit dans le message de
news:aj6n71ln6pdtc7pcinh88ttaqvmnujsafg (AT) 4ax (DOT) com...
| Quote: | On Fri, 6 May 2005 17:44:04 +0200, "Olivier" <ope (AT) club-internet (DOT) fr>:
L'instruction à "0x00402163" emploie l'adresse mémoire "0xcccccce4". La
mémoire ne peut pas être "written".
À vue de nez, l'erreur peut provenir d'à peu près n'importe où. Essaie
d'isoler le code qui déconne ; si ça vient d'un truc spécifique
Windows (comme le début de ton message semble le suggérer), cf
fr.comp.os.ms-windows.programmation.
Kelkun
Ça s'écrit "quelqu'un".
--
Le grand site de la philosophie animale :
http://perso.edulang.com/philo/ |
|
|
| Back to top |
|
 |
Olivier Guest
|
Posted: Sat May 07, 2005 6:45 am Post subject: Re: Erreur d'application |
|
|
Je vien d'essayer un autre truc.
En fait si dans ma fonction "void CSite::SetEchelle(int Echelle)" je met
"m_iEchelle = 0;" ça plante mais si je met "m_iEchelle = 0;" dans la
fonction "void CSite::Draw(CDC *pDC)" là tout se passe bien...
Une explication ?
"Olivier" <ope (AT) club-internet (DOT) fr> a écrit dans le message de
news:427c5ba3$0$26072$7a628cd7 (AT) news (DOT) club-internet.fr...
| Quote: | J'ai isolé le code qui plante de la maniere suivante :
void CSite::SetEchelle(int Echelle)
{
CString strTxt;
strTxt.Format("Echelle = %d",Echelle);
AfxMessageBox(strTxt);
m_iEchelle = Echelle;
strTxt.Format("Echelle 2 = %d",Echelle);
AfxMessageBox(strTxt);
}
Au changement d'échelle, j'ai bien le premier MessageBox qui s'affiche
avec
la bonne valeur, mais dès que je clique sur OK -> plantage.
Donc ce qui fait planter c'est : m_iEchelle = Echelle;
Je ne comprends pas...
"Fabien LE LEZ" <gramster (AT) gramster (DOT) com> a écrit dans le message de
news:aj6n71ln6pdtc7pcinh88ttaqvmnujsafg (AT) 4ax (DOT) com...
On Fri, 6 May 2005 17:44:04 +0200, "Olivier" <ope (AT) club-internet (DOT) fr>:
L'instruction à "0x00402163" emploie l'adresse mémoire "0xcccccce4". La
mémoire ne peut pas être "written".
À vue de nez, l'erreur peut provenir d'à peu près n'importe où. Essaie
d'isoler le code qui déconne ; si ça vient d'un truc spécifique
Windows (comme le début de ton message semble le suggérer), cf
fr.comp.os.ms-windows.programmation.
Kelkun
Ça s'écrit "quelqu'un".
--
Le grand site de la philosophie animale :
http://perso.edulang.com/philo/
|
|
|
| Back to top |
|
 |
Serge Paccalin Guest
|
Posted: Sat May 07, 2005 8:19 am Post subject: Re: Erreur d'application |
|
|
Le samedi 7 mai 2005 à 08:12:24, Olivier a écrit dans fr.comp.lang.c++ :
| Quote: | L'instruction à "0x00402163" emploie l'adresse mémoire "0xcccccce4". La
mémoire ne peut pas être "written".
J'ai isolé le code qui plante de la maniere suivante :
void CSite::SetEchelle(int Echelle)
{
CString strTxt;
strTxt.Format("Echelle = %d",Echelle);
AfxMessageBox(strTxt);
m_iEchelle = Echelle;
strTxt.Format("Echelle 2 = %d",Echelle);
AfxMessageBox(strTxt);
}
Au changement d'échelle, j'ai bien le premier MessageBox qui s'affiche avec
la bonne valeur, mais dès que je clique sur OK -> plantage.
Donc ce qui fait planter c'est : m_iEchelle = Echelle;
Je ne comprends pas...
|
Une note en passant : au cas où tu n'aurais pas remarqué, les autres
répondent en-dessous, en supprimant ce qui ne sert pas ; tu es prié d'en
faire autant. D'avance merci.
Si ça plante au moment de l'affectation d'une donnée membre, il est
probable que l'object concerné n'est pas valide. Le problème est sans
doute avant l'appel à SetEchelle. Par exemple :
CSite *pSite; // pas initialisé
pSite->SetEchelle(42); // A fait boum le programme
Ou encore :
CSite *pSite = NULL;
{
CSite Site; // Construction
pSite = &Site; // Affectation
} // Destruction
pSite->SetEchelle(42); // A fait boum le programme
A priori, une valeur comme 0xcccccce4, ça me fait penser au pointeur pas
initialisé. Avec Visual C++ en mode débug, les variables non
initialisées sont remplies de 0xcc (alors que les blocs mémoire sont
remplis de 0xcd, et les objets détruits, remplis de 0xfeee). Ta donnée
membre m_iEchelle est à l'offset 0x18 dans ta classe CSite.
--
___________ 07/05/2005 10:07:28
_/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net
_L_) Il faut donc que les hommes commencent
-'(__) par n'être pas fanatiques pour mériter
_/___(_) la tolérance. -- Voltaire, 1763
|
|
| Back to top |
|
 |
Yalbrieux Guest
|
Posted: Sat May 07, 2005 12:41 pm Post subject: Re: Erreur d'application |
|
|
Bonjour,
En supposant m_iEchelle convenablement déclaré dans l'entête (oui ?),
si vous appelez la méthode SetEchelle( ) avant la construction de CSite ça
plante.
Si vous passez par Draw c'est que vous avez construit et ça ne plante pas.
J'ai bon ?
Cordialement
Yves
|
|
| Back to top |
|
 |
Olivier Guest
|
Posted: Sun May 08, 2005 9:35 am Post subject: Re: Erreur d'application |
|
|
J'ai essayé en créant un pointeur sur ma classe CSite dans le fichier header
de ma classe View :
private:
CSite* m_pSite;
Puis au changement d'échelle j'ai mis :
if (m_pSite)
m_pSite->SetEchelle(m_iEchelle);
Et toujours le même message :
L'instruction à "0x0040200e" emploie l'adresse mémoire "0xcdcdcde5". La
mémoire ne peut être "written".
C'est un truc de fou...
|
|
| Back to top |
|
 |
Vincent Lascaux Guest
|
Posted: Sun May 08, 2005 9:44 am Post subject: Re: Erreur d'application |
|
|
| Quote: | C'est un truc de fou...
|
Poste un code minimal executable (avec une fonction main et tout) qui
plante...
--
Vincent
|
|
| Back to top |
|
 |
Yalbrieux Guest
|
Posted: Sun May 08, 2005 4:26 pm Post subject: Re: Erreur d'application |
|
|
Bonsoir,
[...]
| Quote: | CSite* m_pSite;
[...]
if (m_pSite)
m_pSite->SetEchelle(m_iEchelle);
|
C'est ce dont je me doutais.
Après déclaration de votre pointeur ajoutez :
m_pSite=new CSite ; // pour construire un objet CSite
Ca devrait mieux aller :)
Et n'oubliez pas le
delete m_pSite ; // quand il n'y en a plus besoin
Cordialement
Yves
|
|
| Back to top |
|
 |
Olivier Guest
|
Posted: Sun May 08, 2005 7:12 pm Post subject: Re: Erreur d'application |
|
|
Super merci, ça marche...
|
|
| Back to top |
|
 |
Olivier Guest
|
Posted: Mon May 09, 2005 5:03 pm Post subject: Re: Erreur d'application |
|
|
Fausse joie... Ca ne marche pas...
Si je met ça dans "void CSite::Draw(CDC *pDC)"
CString strTxt;
strTxt.Format("Echelle = %d",m_iEchelle);
AfxMessageBox(strTxt);
et que je change l'échelle qui devrait être 0,1 ou 2, elle est et reste
à -842150451.....
:-(
|
|
| Back to top |
|
 |
Yalbrieux Guest
|
Posted: Mon May 09, 2005 5:10 pm Post subject: Re: Erreur d'application |
|
|
Allez, courage.
On peut trouver un bogue de codage mais pas d'algo.
C'est plus le même forum.
cordialement
Yves
|
|
| Back to top |
|
 |
Olivier Guest
|
Posted: Tue May 10, 2005 2:29 pm Post subject: Re: Erreur d'application |
|
|
Bonjour,
Je recherche une personne pouvant tester mon source en Visual C++ 6 et MFC
et éventuellement me dire d'ou vient mon erreur...
Mon email est [email]ope (AT) club-internet (DOT) fr[/email]
Cordialement,
Olivier
|
|
| Back to top |
|
 |
Pierre THIERRY Guest
|
Posted: Wed May 11, 2005 1:38 am Post subject: Re: Erreur d'application |
|
|
Le Tue, 10 May 2005 16:29:09 +0200, Olivier a écrit :
| Quote: | Je recherche une personne pouvant tester mon source en Visual C++ 6 et
MFC
|
fr.comp.os.ms-windows.program
HTH & HAND
--
[email]nowhere.man (AT) levallois (DOT) eu.org[/email]
OpenPGP 0xD9D50D8A
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|