cs_jindono
Messages postés9Date d'inscriptiondimanche 26 mars 2006StatutMembreDernière intervention12 décembre 2008
-
11 déc. 2008 à 17:04
cs_jindono
Messages postés9Date d'inscriptiondimanche 26 mars 2006StatutMembreDernière intervention12 décembre 2008
-
12 déc. 2008 à 11:53
Bonjour tout le monde,
J'ai un souci en mode debug (sachant que le même code marche très bien en Release)
voici le contenu de la pile d'appel
NTDLL! 7c91120e()
NTDLL! 7c97c63e()
NTDLL! 7c9703b0()
KERNEL32! 7c85f8d7()
_CrtIsValidHeapPointer(const void * 0x003ec5c0) line 1606
_free_dbg_lk(void * 0x003ec5c0, int 1) line 1011 + 9 bytes
_free_dbg(void * 0x003ec5c0, int 1) line 970 + 13 bytes
operator delete(void * 0x003ec5c0) line 351 + 12 bytes CTreeList::OnWrite(unsigned int 1376304, long 4113856) line 259 + 15 bytes
et voici le code responsable :
LRESULT CTreeList::OnWrite(WPARAM wParam, LPARAM lParam)
{
//lParam est un long
char * vPt = (char *)lParam; //vPt est affectée correctement
SetItemText( (HTREEITEM)wParam , vPt );
delete vPt; // c'est là que ça coince en debug
return 0;
}
Pour info je suis en mode "Debug Multithreaded DLL"
j'ai aussi utilisé WinDbg pour voir ce qui se passe ( tout en ajoutant une variable d'environnement _NT_SYMBOL_PATH dont la valeur est
symsrv*symsrv.dll*e:\symbols*http://msdl.microsoft.com/download/symbols afin de télécharger des symboles manquants pour ntdll.dll, mais rien n'y fait.
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024103 11 déc. 2008 à 17:16
Salut,
Aucun interêt à faire un delete ici. En effet, tu fais juste une copie de pointeur, donc rien d'allouer, donc rien à deleter.
Tu peux donc, sans problème, supprimer cette ligne.
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...