Malloc et mémoire affectée

Chop_chop Messages postés 10 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 7 mai 2007 - 4 avril 2007 à 14:56
cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 - 4 avril 2007 à 20:13
Bonjour,

J'ai un petit soucis quant à l'allocation de mémoire pour un char* avec l'utilisation de malloc.
Voici mon code (bien allégé) :


char *fichier;

int taille =1504;


 if(fichier = (char*)malloc(taille))

          {

                         

                len = strlen( fichier );

                printf("Taille = %i \n", len);

                    ...

                   //mon code

            }



Lorsque je fais mon printf, la taille affichée est 1520 (alors que cela devraot etre 1504, non?).
De plus, lorsque j'affiche ma chaine "fichier" non remplie, j'obtiens en fin de chaine " ²²²²½½½½½½½½¯¦¯¦ " qui correspondent à ces 16 car en trop...

Comment rectifier le problème et faire en sorte que fichier ne contienne que 1504 char sans les indésirables de la fin ?

Merci

3 réponses

yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
4 avril 2007 à 15:43
Salut !

strlen() te donne la position du premier '0' (caractère de fin de chaine) trouvé. Donc elle compte tant qu'elle n'en trouve pas.
Si tu veux la taille allouée par le malloc, il faut utiliser _msize() je crois (#include <malloc.h>).

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
____________________________________________
[Site officiel de YoyoCut, découpe fichiers open source]
0
clempar55 Messages postés 59 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 4 avril 2007
4 avril 2007 à 19:45
Ici tu alloue de la mémoire mais elle n'est pas initialisée automatiquement. Le contenu de fichier est donc aléatoire et la position du premier '0' aussi et donc strlen renvoie aussi un résultat aléatoire.
Il faut que tu initialise manuellement ta memoire
0
cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 3
4 avril 2007 à 20:13
Bonsoir,

La taille allouée par malloc est taille si le pointeur retourné est different de NULL.

Matt...
0
Rejoignez-nous