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".
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/>
On Fri, 6 May 2005 17:44:04 +0200, "Olivier" <ope@club-internet.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/>
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/>
Pierre THIERRY
Le Fri, 06 May 2005 17:44:04 +0200, Olivier a écrit :
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 --
OpenPGP 0xD9D50D8A
Le Fri, 06 May 2005 17:44:04 +0200, Olivier a écrit :
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
--
nowhere.man@levallois.eu.org
OpenPGP 0xD9D50D8A
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" a écrit dans le message de news:
On Fri, 6 May 2005 17:44:04 +0200, "Olivier" :
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/>
J'ai isolé le code qui plante de la maniere suivante :
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@gramster.com> a écrit dans le message de
news:aj6n71ln6pdtc7pcinh88ttaqvmnujsafg@4ax.com...
On Fri, 6 May 2005 17:44:04 +0200, "Olivier" <ope@club-internet.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/>
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" a écrit dans le message de news:
On Fri, 6 May 2005 17:44:04 +0200, "Olivier" :
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/>
Olivier
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" a écrit dans le message de news:427c5ba3$0$26072$
J'ai isolé le code qui plante de la maniere suivante :
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" a écrit dans le message de news:
On Fri, 6 May 2005 17:44:04 +0200, "Olivier" :
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/>
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@club-internet.fr> a écrit dans le message de
news:427c5ba3$0$26072$7a628cd7@news.club-internet.fr...
J'ai isolé le code qui plante de la maniere suivante :
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@gramster.com> a écrit dans le message de
news:aj6n71ln6pdtc7pcinh88ttaqvmnujsafg@4ax.com...
On Fri, 6 May 2005 17:44:04 +0200, "Olivier" <ope@club-internet.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/>
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" a écrit dans le message de news:427c5ba3$0$26072$
J'ai isolé le code qui plante de la maniere suivante :
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" a écrit dans le message de news:
On Fri, 6 May 2005 17:44:04 +0200, "Olivier" :
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/>
Serge Paccalin
Le samedi 7 mai 2005 à 08:12:24, Olivier a écrit dans fr.comp.lang.c++ :
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 :
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
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
Le samedi 7 mai 2005 à 08:12:24, Olivier a écrit dans fr.comp.lang.c++ :
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 :
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
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
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
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
Yalbrieux
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
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
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
Olivier
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...
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".
Poste un code minimal executable (avec une fonction main et tout) qui plante...
-- Vincent
Yalbrieux
Bonsoir,
[...]
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
Bonsoir,
[...]
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
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