KissyFroth
Messages postés38Date d'inscriptionmardi 16 août 2005StatutMembreDernière intervention 7 avril 2007
-
3 mai 2006 à 00:24
maroua_maram
Messages postés5Date d'inscriptionvendredi 11 mai 2007StatutMembreDernière intervention10 mars 2008
-
10 mars 2008 à 14:31
Voici mon code :
char * t1 = new char [30];
char * t2 = new char [40]; //Les chiffres ne sont pas exact mai c pas grave
cout << strlen(t1) << "\n";
cout << strlen(t2);
et voici ce que j'obtiens :
30
54 //Note : ce chiffre varie d'un redémarrage à l'autre mais il est tjrs faux(par valeur supérieure)
Si quelqu'un pouvait élucider ce qui pour moi est un grand mystère ...
si possible avant que j'ai épuisé mon lot de tisane et de camomille ...
En réalité ce bout de code se situe dans une fonction bien précise et c'est toujours la taille du deuxieme pointeur que je déclare qui est fausse quel que soit le nom ou la taille. Je n'ai jamais eu de problème de ce type et je ne comprend vraiment pas.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 3 mai 2006 à 10:55
"en plus, il ne faut pas se fier à sizeof"
Ca veut dire quoi ca?
Pour le problème de départ, je crois que new alloue *au moins* la valeur demandée, donc ne pas s'étonner qu'on a plus de mémoire allouée. De toutes facons, c'est sur que faire un strlen sur de la mémoire non initialisée, c'est plutot dangeureux
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 3 mai 2006 à 17:57
Je sais pas. C'est BruNews qui ma dit ça. J'ai jamais vraiment sû pourquoi. Je crois que c'est le risque que la variable évaluer soit un paramètre. Dans ce cas, la valeur renvoyé n'est plus bonne. De toute façon, même si je ne t'apprend rien, sizeof n'est pas pour la mémoire dynamique.
___________________________________________
Les plus grands esprits trouvent toujours une solution