heap corruption detected dans le destructeur de CStringT

heap corruption detected dans le destructeur de CStringT - C++ - Programmation

Marsh Posté le 01-07-2008 à 00:40:00    

bonjour à tous,
 
Dans mon code, j'utilise des CString que j'initialise de la manière suivante : CString str = _T("asasd" );
 
Lorsque cette variable est utilisée dans une fonction et que je quitte cette fonction, le destructeur ~CStringT() est appelé et produit un "heap corruption detected " !!!!
 
J'utilise Visual 2008 et...... je ne comprends plus rien!!!!!!!!
 
Merci d'avance

Reply

Marsh Posté le 01-07-2008 à 00:40:00   

Reply

Marsh Posté le 01-07-2008 à 09:01:23    

pourquoi n'utilises tu pas std::string ou std::wstring ?

Reply

Marsh Posté le 01-07-2008 à 11:48:27    

Ce ne sont probablement pas les CStringT qui vont corrompre la mémoire. Il doit juste faire un _CrtCheckMemory() dans le destructeur et ta mémoire a du être corrompue un peu avant.
 
Mets en dans ton code aux endroits critiques, ca devrait t'aider à localiser le problème.

Reply

Marsh Posté le 01-07-2008 à 17:21:52    

Merci,
 
Je vais investiguer tout ça
 
Je vous tiens au courant.

Reply

Marsh Posté le 01-07-2008 à 17:34:33    

après une série de _CrtCheckMemory(), je m'aperçois que ça se passe pas très bien après : itoa(i,id.GetBuffer(0), 10);  ( i est un entier)
 
Que puis-je faire pour éviter ça?

Reply

Marsh Posté le 01-07-2008 à 17:47:05    

Pour répondre à Joel, j'avais l'habitude à l'époque d'utiliser les CString et il n'y avait aucun problème d'où mon choix de réitérer l'exploit!!!

Reply

Marsh Posté le 01-07-2008 à 17:48:26    

ne pas utiliser itoa, passer par des string standard.
 
Quel est le type de id ? ce buffer que tu reçois, as-tu réellement le droit d'écrire dedans ? est-il alloué ?
 
Dans tes CStringT, tu devrais probablement avoir une méthode plus propre que ca pour faire les conversions d'entier vers chaine ou de chaine vers entier. Cherche éventuelement de ce côté là.

Reply

Marsh Posté le 01-07-2008 à 17:49:07    

cyte a écrit :

Pour répondre à Joel, j'avais l'habitude à l'époque d'utiliser les CString et il n'y avait aucun problème d'où mon choix de réitérer l'exploit!!!


 
Si c'est juste une question d'habitude alors abandonne-les pour quelque chose de standard : la classe string fournie parla STL est très bien

Reply

Marsh Posté le 01-07-2008 à 20:08:38    

la fonction AppendFormat a l'air de mieux faire les choses....
 
merci beaucoup pour votre aide précieuse

Reply

Sujets relatifs:

Leave a Replay

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