Allocation mémoire

Résolu
cs_imanewin32 Messages postés 70 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 12 août 2004 - 5 août 2004 à 11:24
essirc Messages postés 48 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 26 juillet 2005 - 5 août 2004 à 11:41
je demande à mon prog d'allouer 40 caractère pour un char*
et l'allocation se fait tjrs sur seulement 4 caractères
pourquoi?

4 réponses

essirc Messages postés 48 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 26 juillet 2005 3
5 août 2004 à 11:38
Peut etre cela vient il d'une petite confusion entre :

strlen(machaine); // retourne la taille d'une chaine de char

et

sizeof(machaine); // retourne la taille du pointeur, soit 4 octets
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 août 2004 à 11:39
ben oui, sizeof pointeur sera toujours 4 dans un prog 32 bits.

ciao...
BruNews, Admin CS, MVP Visual C++
3
essirc Messages postés 48 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 26 juillet 2005 3
5 août 2004 à 11:41
Ah ben gagné. Pour avoir la taille de ta chaîne de caractères il faut que tu utilises strlen(), mais comme cela a été expliqué dans un post précédent, la fonction strlen() te retrounera le nombre de caratères présents dans ton tableau et pas l'espace alloué au tableau lors de sa création.
3
cs_imanewin32 Messages postés 70 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 12 août 2004
5 août 2004 à 11:38
pour vérifier j'utilise la fonction sizeof(chaine);

""
char* chaine;
char res[4];
chaine=new char[40];
sprintf(res,"%d",sizeof(chaine));
''''''
0
Rejoignez-nous