je tripatouillais des trucs en c++ tout à l’heure quand je me suis rendu de quelquechose d’assez inattendu:
quand je crée un tableau de char de cette facon: new char[X], je ne retrouve pas par la suite la taille escomptée. Par exemple, un strlen(new char[12]) me sort un 17 et un strlen(new char[13]) me donne 25.
Si quelqu’un a une explication, je suis plus que preneur.
Note: je suis Windows et j’utilise le compilateur de Microsoft.
[quote name=‹ cooper_sunz › date=’ 1 Feb 2005, 18:00’]Bonjour,
je tripatouillais des trucs en c++ tout à l’heure quand je me suis rendu de quelquechose d’assez inattendu:
quand je crée un tableau de char de cette facon: new char[X], je ne retrouve pas par la suite la taille escomptée. Par exemple, un strlen(new char[12]) me sort un 17 et un strlen(new char[13]) me donne 25.
Si quelqu’un a une explication, je suis plus que preneur.
Note: je suis Windows et j’utilise le compilateur de Microsoft.
[right][post=« 327970 »]<{POST_SNAPBACK}>[/post][/right][/quote]
Normal…
strlen se base sur la premiere occurence du char ‹ \0 › pour calculer la longueur. Vu que tu n’as absolument rien entre comme valeur dans ton char, il continue plus loin… et en dehors de ta zone allouee…
[quote name=‘Trevidos’ date=’ 1 Feb 2005, 18:13’]strlen se base sur la premiere occurence du char ‘\0’ pour calculer la longueur. Vu que tu n’as absolument rien entre comme valeur dans ton char, il continue plus loin… et en dehors de ta zone allouee…
[right][post=“327980”]<{POST_SNAPBACK}>[/post][/right][/quote]
Merci pour la réponse.
Mais je voudrais quand même savoir s’il est alors possible de connaître la taille allouée à un tableau de char vide. Je dois regarder du coté de sizeof ?
[quote name=‹ cooper_sunz › date=’ 1 Feb 2005, 18:23’]Merci pour la réponse.
Mais je voudrais quand même savoir s’il est alors possible de connaître la taille allouée à un tableau de char vide. Je dois regarder du coté de sizeof ?
[right][post=« 327984 »]<{POST_SNAPBACK}>[/post][/right][/quote]
Non ce n’est pas possible, pas de manière standard. De même qu’il n’est pas possible de connaitre la taille d’un buffer mémoire alloué avec malloc. Si tu as alloués le tableau, alors tu dois savoir quelle taille il fait, c’est le postulat qui dirige le C et par extension le C++
[quote name=‹ tuo › date=’ 1 Feb 2005, 20:49’]Si tu as alloués le tableau, alors tu dois savoir quelle taille il fait, c’est le postulat qui dirige le C et par extension le C++
[right][post=« 328026 »]<{POST_SNAPBACK}>[/post][/right][/quote]
Ben merci, je m’endormirai moins bete ce soir