[Débutant] Malloc de char* : caractères bizarres affichés
salut,
voilà si j'alloue un char * avec la fonction malloc comme suit :
Code:
1 2
|
char* final_result = (char*)malloc(4); |
et que je survole en mode débug ma variable, j'observe ca :
IIIIyyyy1
(les I et les y ont des accents aigues)
je comprend bien que j'alloue de la mémoire seulement, donc les données sont pipo, mais pourquoi autant de caractères, vu que j'en ait demandé 4 seulement?
Ma seconde question : j'alloue dynamiquement un char* pour rentrer N char dedans. Est-ce que je dois allouer pour N+1 en rajoutant à la fin le caractère nul 0x00? ou est-ce que ca peut le faire sans ?
MErci pour vos réponses
++
Re: [Débutant] Malloc de char* : caractères bizarres affiché
Citation:
Envoyé par arthix
voilà si j'alloue un char * avec la fonction malloc comme suit :
C'est quoi un char * ?
http://emmanuel-delahaye.developpez.....htm#char_star
Citation:
Code:
1 2
|
char* final_result = (char*)malloc(4); |
A quoi sert le cast ?
http://emmanuel-delahaye.developpez....tes.htm#malloc
Citation:
Ma seconde question : j'alloue dynamiquement un char* pour rentrer N char dedans. Est-ce que je dois allouer pour N+1 en rajoutant à la fin le caractère nul 0x00? ou est-ce que ca peut le faire sans ?
En réalité, tu alloues un bloc de 4 char. malloc() retourne l'adresse, et tu la ranges dans une variable de type pointeur sur char. Ceci, afin de pouvoir l'utiliser par la suite comme un tableau de 4 char.
Si tu as l'intention de t'en servir comme d'une chaine, il est clair que la longueur max de la chaine sera de 3 caractères, puisque le dernier caractère d'une chaine doit obligatoirement être un 0.
Tout ceci, malloc() l'ignore. Tu lui demandes 4 bytes, il te donnes l'adresse d'un tabeau de 4 bytes (ou NULL en cas d'echec). Il ne peut pas deviner tes intentions et ajouter un char en plus comme par magie... Le C, c'est un langage direct. Pas ou peu de magie cachée...