Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
5259 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  heap corruption detected dans le destructeur de CStringT

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

heap corruption detected dans le destructeur de CStringT

n°1753792
cyte
Posté le 01-07-2008 à 00:40:00  profilanswer
 

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

mood
Publicité
Posté le 01-07-2008 à 00:40:00  profilanswer
 

n°1753837
Joel F
Real men use unique_ptr
Posté le 01-07-2008 à 09:01:23  profilanswer
 

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

n°1753910
theShockWa​ve
I work at a firm named Koslow
Posté le 01-07-2008 à 11:48:27  profilanswer
 

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.

n°1754134
cyte
Posté le 01-07-2008 à 17:21:52  profilanswer
 

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

n°1754140
cyte
Posté le 01-07-2008 à 17:34:33  profilanswer
 

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?

n°1754152
cyte
Posté le 01-07-2008 à 17:47:05  profilanswer
 

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!!!

n°1754155
theShockWa​ve
I work at a firm named Koslow
Posté le 01-07-2008 à 17:48:26  profilanswer
 

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à.

n°1754157
theShockWa​ve
I work at a firm named Koslow
Posté le 01-07-2008 à 17:49:07  profilanswer
 

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

n°1754223
cyte
Posté le 01-07-2008 à 20:08:38  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  heap corruption detected dans le destructeur de CStringT

 

Sujets relatifs
changer la taille du heap automatiquementheap/stack/segment
appel du destructeur et opérateurs[C++] Destructeur ? Comprends pas..
destructeur de classetrouver taille du heap java
Serveur HTTP et Stack smashing detectedNoob détected ! ouvrir un lien dans la meme page
Changer la taille du heap space de JVM[C++] Probleme : Heap corruption detected
Plus de sujets relatifs à : heap corruption detected dans le destructeur de CStringT


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)