Tout d'abord, une fuite mémoire, ce n'est pas ça. C'est un malloc non désalloué.
Ici, tu as très probablement des débordements. contrôle les sorties de tes tableaux.
Et le fait de rajouter un printf décale juste la mémoire, et donc change l'adressage, et les bords de segments.
Quelle variable est pourrie ?
Merci pour vos précisions, alors sur un premier affichage du tableau de ma structure, il semblerait que seul le champs "code" de l'indice " 'b' " ne fonctionne pas mais ensuite plusieurs champs code d'autres indices dysfonctionnent lorsque j'appelle d'autres fonctions.
Je vous joint le résultat de l'affichage sur mon terminal les deux premières colonnes correspondent aux indices de mon tableau et la troisième colonne correspond aux codes (char *) associés à chaque indice:
a 97 0
b 98 110
c 99 1110
d 100 1111
r 114 10
b 98 110
Le printf: La taille_texte est de 26
a 97 0
b 98 /�-C�U
c 99 1110
d 100 1111
r 114 10
b 98 /�-C�U
Alors j'ai réussi à résoudre mon problème en augmentant la taille de mes chaînes de caractères qui contenaient le code associé à chaque lettre, ils étaient à NBLETTRES (255) et je les ai tous mis à 1000, mais je ne saisis pas vraiment ce qui a provoqué le dépassement mémoire car normalement aucun codes ne dépassaient la taille de 255, ils étaient de taille 4 maximum. L'utilisation de strcat et strcpy ont-ils un lien avec mon erreur ?
Les chaines qui foirent, et vu ton code, ça sent la variable locale passée à un pointeur :
Ta structure contient char* code. et tu fais : traduc[lettre].code = code;
Donc tu poses un pointeur sur une variable locale, qui disparait quand tu quittes la fonction, donc ton pointeur Code::code pointe sur un truc désalloué.
Mon conseil, change ta structure :
struct
{
char code[MAXCODE];
int taille;
}
Et fait un strcpy au lieu de faire un = ligne 12 de code_comp
D'accord merci beaucoup, je comprend mieux mon erreur à présent j'ai effectué les changements et tout marche comme sur des roulettes !
Je passe en résolu , bonne journée à toi !
Problème de fuite mémoire après un printf
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html