Probleme avec des pointeurs

Résolu
KissyFroth Messages postés 38 Date d'inscription mardi 16 août 2005 Statut Membre Dernière intervention 7 avril 2007 - 3 mai 2006 à 00:24
maroua_maram Messages postés 5 Date d'inscription vendredi 11 mai 2007 Statut Membre Dernière intervention 10 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.

7 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 mai 2006 à 02:02
strlen() ne donne pas la taille mais combien de caractères à partir du pointeur avant de trouver un ZERO (celui qui doit terminer toute chaine).

ciao...
BruNews, MVP VC++
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
3 mai 2006 à 00:32
C'est pas asser ce bout de code. Peu tu en poster plus stp.

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
3 mai 2006 à 02:10
Ah il veut savoir la quantité de mémoire alloué. Ah bien dans ce cas, sauf erreure, je crois pas qu'il peut faire autrement que:

cout << 30 << "\n";
cout << 40;

impossible d'utiliser sizeof car c'est de l'allocation mémoire dynamique(oui je sais qu'en plus, il ne faut pas se fier à sizeof).

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 mai 2006 à 02:19
Judicieux rappel pour sizeof.

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
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
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
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
0
maroua_maram Messages postés 5 Date d'inscription vendredi 11 mai 2007 Statut Membre Dernière intervention 10 mars 2008
10 mars 2008 à 14:31
bonjour,
est ce quelqu'un peut me dire ce que signifie " void (*) " ?
je suis novice en programmation C.
merci d'avance.
0
Rejoignez-nous