Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

question sur les pointers et strlen()

42 réponses
Avatar
Laurent Hamery
bonjour
je debute en c++ et j`ai un soucis avec les allocations dynamiques de
tableaux
je suis sous window avec vc++
voici un resume de mon code :
int main() {

int blockSize =100;

char *buffer2 = 0;

buffer2 = new char[blockSize];

int sizeOfReturn = strlen(buffer2);

cout << "sizeOfReturn = " << sizeOfReturn << endl;

return 0;

}

/* RESULT */

sizeOfReturn = 105

certainement parce que je ne connais pas bien les pointers ... mais je ne
comprends pas pourquoi la je n`ai pas sizeOfReturn = 100 ...

pourriez vous m`expliquer tt ca ?

2 réponses

1 2 3 4 5
Avatar
drkm
Gabriel Dos Reis writes:

On peut faire sizeof -- c'est écrit dans le préambule.
Pour les autres c'est un peu plus problématique ; en particulier pour
throw.


Tiens, il semble cependant que c'est l'un des buts. Dans le
préambule :

nullptr: It must be copyable, throwable, and passable through
varargs.

Quels sont les problèmes ?

--drkm

Avatar
Michel Michaud
Dans news:,
"Michel Michaud" wrote in message
news:<iLhmc.46920$...
Bon, pour équilibrer la discussion, si on veut se mettre à
faire des statistiques officieuses et biaisées, je crois que
j'ai connu personnellement plus de programmeurs C++ que toi.
Et moi, tout ceux que je connais personnellement utilisent 0
:-)


C'est que c'est toi qui les a (dé-)formé :-). Et je


Effectivement :-)

parais que j'ai vu plus de règlages de codage que toi.


Là c'est moins sûr. Je suis beaucoup intéressé par ces sujets
et j'en ai vu des tonnes sur internet et dans divers livres.
Par contre, c'est sûr, tu en auras probablement appliqué plus
que moi. J'espère que ça t'a permis de découvrir celles qui
te semblent les meilleures... :-)

Enfin, il y en a qui utilise NULL, et il y en a qui utilise 0.
Je crois qu'on est bien d'accord là. Et le pourcentage qui
utilise 0 est probablement plus élevé en C++ qu'en C, mais
déjà, c'est une estimation sans fondament rigueureux de ma
part.


Oui, je suis d'accord sur le fond, mais justement je voulais
simplement signaler que toi et moi, on ne peut pas connaître
la vérité absolue sur ce point, seulement ce qu'on en a vu.

Aussi : Stroustrup utilise 0, tandis que Kernighan et Richie
utilisent NULL.


Exactement. Et comme je répète souvent : quand j'ai un doute,
je fais comme Bjarne. Si on veut me dire que je ne fais pas
« correctement », je me dis que je suis bonne compagnie et
que ceux qui veulent me convaincre de changer peuvent
commencer par essayer de le convaincre :-)

Par ailleurs, je crois que K&R écrirait plutôt « if (p) » au
lieu de « if (p != NULL) »...

[...]
Ici, où il n'y
a pas de règles de codage, je rétrouve : if ( p == 0 ) ...
if ( p == NULL ) ...
if ( ! p ) ...
Dans la même fonction, parfois. Voire même dans la même
expression (« if ( p1 != 0 && p2 != NULL ) ... »).

Alors, je ne sais pas ce que préfèrent les gens qui ont
travaillé sur ce code:-).


En tout cas, moi, j'essayerais d'imposer un style, n'importe
lequel, mais mêler les deux dans la même expression, ça me
semble vraiment inacceptable...

Est-ce qu'on serait d'accord que ou « if ( p == NULL ) » ou «
if ( p == 0 ) » est supérieur à simplement « if ( ! p ) » ? Et


Oui. En C++. En C, je trouve que les « if (var) » sont assez
idiomatiques (à moins que les choses soient maintenant différentes d'il
y a 15 ans...) pour que je trouve « if (!p) »
plus simple que « if (p == NULL) », qui peut m'obliger à
ajouter un #include simplement pour avoir NULL... Je n'ai pas
ce problème en C++ avec « if (p == 0) » :-)

qu'une cohérence, quelque soit le choix


Tout à fait. C'est l'essence même des règles de codage je
trouve.

Et qu'il y a des questions de style plus importantes :-) ?


Comme ? :-)

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


1 2 3 4 5