OVH Cloud OVH Cloud

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 ?

10 réponses

1 2 3 4 5
Avatar
Gabriel Dos Reis
Christophe de VIENNE writes:

| Christophe de VIENNE wrote:
| > Gabriel Dos Reis wrote:
| >
| >> Aide-toi, le comité t'aidera :-)
| >>
| >> http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2004/n1601.pdf)
| >>
| > Page 4, 2ème phrase du chapitre 2:
| > "The nullptr keyword designates a constant rvalue of type
| > decltype(null_ptr t), assuming (...)"
| > ^^^^
| > Il n'y aurait pas une faute de frappe là ?
|
| Ironie du sort, j'ai fait une faute de frappe en recopiant celle du
| papier :-)
|
| Il fallait lire : "decltype(nullptr_t)", ce qui est bien ce qui est
| écrit dans le document, mais qui devrait être decltype(nullptr) si
| j'ai bien tout compris.

yep.

-- Gaby
Avatar
Christophe de VIENNE
Christophe de VIENNE wrote:
Gabriel Dos Reis wrote:

Aide-toi, le comité t'aidera :-)

http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2004/n1601.pdf)



Page 4, 2ème phrase du chapitre 2:
"The nullptr keyword designates a constant rvalue of type
decltype(null_ptr t), assuming (...)"
^^^^
Il n'y aurait pas une faute de frappe là ?


Ironie du sort, j'ai fait une faute de frappe en recopiant celle du
papier :-)

Il fallait lire : "decltype(nullptr_t)", ce qui est bien ce qui est
écrit dans le document, mais qui devrait être decltype(nullptr) si j'ai
bien tout compris.



A+

Christophe



Avatar
Gabriel Dos Reis
Christophe de VIENNE writes:

| Gabriel Dos Reis wrote:
| > writes:
| > | (Il me semble avoir entendu dire que le comité considère une
| > | modification en cette direction. Mais je ne suis pas sûr ; je ne suis
| > | plus de près la normalisation.)
| > Aide-toi, le comité t'aidera :-)
| > http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2004/n1601.pdf)
| >
|
| Autre point pas clair : A au moins deux endroits il est sous-entendu
| qu'on ne devrait pas pouvoir faire typeid(nullptr), sizeof, ou
| throw. Mais dans la partie des exemples 'poussés', les trois sont
| montrés avec un " // ok"
| Au bout du compte je ne sais pas ce qui est réellement voulu : qu'on
| puisse le faire ou non ?

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.

Ce sera certainement rendu plus clair dans la prochaine version du
papier.

-- Gaby
Avatar
Christophe de VIENNE
Gabriel Dos Reis wrote:
writes:
| (Il me semble avoir entendu dire que le comité considère une
| modification en cette direction. Mais je ne suis pas sûr ; je ne suis
| plus de près la normalisation.)

Aide-toi, le comité t'aidera :-)

http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2004/n1601.pdf)



Autre point pas clair : A au moins deux endroits il est sous-entendu
qu'on ne devrait pas pouvoir faire typeid(nullptr), sizeof, ou throw.
Mais dans la partie des exemples 'poussés', les trois sont montrés avec
un " // ok"
Au bout du compte je ne sais pas ce qui est réellement voulu : qu'on
puisse le faire ou non ?

A+

Christophe

Avatar
Christophe de VIENNE
Gabriel Dos Reis wrote:
Christophe de VIENNE writes:
| Autre point pas clair : A au moins deux endroits il est sous-entendu
| qu'on ne devrait pas pouvoir faire typeid(nullptr), sizeof, ou
| throw. Mais dans la partie des exemples 'poussés', les trois sont
| montrés avec un " // ok"
| Au bout du compte je ne sais pas ce qui est réellement voulu : qu'on
| puisse le faire ou non ?

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.

Ce sera certainement rendu plus clair dans la prochaine version du
papier.




Ok.

Merci :-)


A+

Christophe

Avatar
Alain Naigeon
"Michel Michaud" a écrit dans le message news:
iLhmc.46920$
j'ai connu personnellement plus de programmeurs C++ que toi.
Et moi, tout ceux que je connais personnellement utilisent 0 :-)


Bof, c'est NULL comme argument, donc je te mets 0 ;-)

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France

Avatar
Michel Michaud
Dans news:409abac3$0$27680$, Alain
"Michel Michaud" a écrit dans le message news:
iLhmc.46920$
j'ai connu personnellement plus de programmeurs C++ que toi.
Et moi, tout ceux que je connais personnellement utilisent 0
:-)


Bof, c'est NULL comme argument, donc je te mets 0 ;-)


Je n'espérais pas moins. Merci ! :-)

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


Avatar
kanze
"Michel Michaud" wrote in message
news:<iLhmc.46920$...
Dans news:,
Ça varie. À vue d'oeil (un « guestimate », comme on dit en anglais),
je dirais qu'en C++, il y a à peu près 60% NULL, et 40% 0, tandis
qu'en C, la différence est plus près des 95%/5%. Mais je ne sais pas
réelement des pourcentages -- dans les boîtes où j'ai travaillé, on
s'est toujours servi de NULL, que ce soit du C ou du C++.


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 parais que j'ai vu
plus de règlages de codage que toi.

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.

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

(Si je te rencontre en personne un jour, je ne pourrai plus dire ça
:-). Curieusement je connais personnellement d'autres programmeurs
C++, mais je ne sais pas s'ils utilisent 0 ou NULL...)


Il y en a un certain nombre dont je ne connais pas les préférences non
plus. Jusqu'ici, dans les boîtes où j'ai travaillé, NULL a été de rigor,
mais je ne sais pas toujours si c'est seulement parce que les règles de
codage y insistaient, ou parce que c'est ce que les gens préféraient.
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:-).

Est-ce qu'on serait d'accord que ou « if ( p == NULL ) » ou « if ( p = 0 ) » est supérieur à simplement « if ( ! p ) » ? Et qu'une cohérence,
quelque soit le choix (y compris simplement « ! p »), est préférable au
mélange ?

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

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Avatar
kanze
"Michel Michaud" wrote in message
news:<iLhmc.46920$...
Dans news:,
Ça varie. À vue d'oeil (un « guestimate », comme on dit en anglais),
je dirais qu'en C++, il y a à peu près 60% NULL, et 40% 0, tandis
qu'en C, la différence est plus près des 95%/5%. Mais je ne sais pas
réelement des pourcentages -- dans les boîtes où j'ai travaillé, on
s'est toujours servi de NULL, que ce soit du C ou du C++.


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 parais que j'ai vu
plus de règlages de codage que toi.

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.

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

(Si je te rencontre en personne un jour, je ne pourrai plus dire ça
:-). Curieusement je connais personnellement d'autres programmeurs
C++, mais je ne sais pas s'ils utilisent 0 ou NULL...)


Il y en a un certain nombre dont je ne connais pas les préférences non
plus. Jusqu'ici, dans les boîtes où j'ai travaillé, NULL a été de rigor,
mais je ne sais pas toujours si c'est seulement parce que les règles de
codage y insistaient, ou parce que c'est ce que les gens préféraient.
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:-).

Est-ce qu'on serait d'accord que ou « if ( p == NULL ) » ou « if ( p = 0 ) » est supérieur à simplement « if ( ! p ) » ? Et qu'une cohérence,
quelque soit le choix (y compris simplement « ! p »), est préférable au
mélange ?

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

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Avatar
Jean-Marc Bourguet
writes:

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


Oui.

Et qu'une cohérence, quelque soit le choix (y compris simplement « !
p »), est préférable au mélange ?


Oui

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


Oui.

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

1 2 3 4 5