[C++/pointeur] petite question
Zempachi
Messages postés
7472
Date d'inscription
Statut
Contributeur
Dernière intervention
-
Zempachi Messages postés 7472 Date d'inscription Statut Contributeur Dernière intervention -
Zempachi Messages postés 7472 Date d'inscription Statut Contributeur Dernière intervention -
Salut,
voilà une question qui me vient.
quand on fait un :
char * str = "toto";
concrètement, mon pointeur pointe vers le premier char 't'.
Et les autres char se suivent.
Mon souci : est ce que les zone mémoires "allouées" pour ces char 't', 'o', 't', 'o' sont elles protégées?
A priori non car rien ne le garantit.
Dans ce cas on devrait plutôt faire:
char* str = new char[4];
str = "toto";
On est d'accord ou je devrais prendre des vacances le vite possible?
ps: autre question subsidiaire, ls PSG est il vraiment condamné?? SNIF!! : (
voilà une question qui me vient.
quand on fait un :
char * str = "toto";
concrètement, mon pointeur pointe vers le premier char 't'.
Et les autres char se suivent.
Mon souci : est ce que les zone mémoires "allouées" pour ces char 't', 'o', 't', 'o' sont elles protégées?
A priori non car rien ne le garantit.
Dans ce cas on devrait plutôt faire:
char* str = new char[4];
str = "toto";
On est d'accord ou je devrais prendre des vacances le vite possible?
ps: autre question subsidiaire, ls PSG est il vraiment condamné?? SNIF!! : (
A voir également:
- [C++/pointeur] petite question
- Pointeur souris - Guide
- Curseur Windows 10 : comment bien voir la souris à l'écran - Guide
- Petite amie virtuelle en français gratuit - Accueil - Intelligence artificielle
- Petite croix snap - Forum Snapchat
- Petite majuscule word ✓ - Forum Word
7 réponses
En faisant ça
char * str = "toto";
Ton str pointe vers une zone mémoire qui est en lecture seule.
Si tu tentes de remplacer une lettre là dedans, tu vas le sentir passer ;-)
Quand tu fais ça:
char* str = new char[4];
str = "toto";
Tu alloues dynamiquement 4 places de char. Ensuite tu écrases l'adresse de cette zone pour faire pointer str vers une autre zone de mémoire qui est en lecture seule. C'est mal :-)
A propos si tu es en C++, tu devrais utiliser des std::string. Avec ça les règles ne sont plus les mêmes et tout est moins compliqué.
ps: autre question subsidiaire, ls PSG est il vraiment condamné?? SNIF!! : (
<aimepaslefoot>
Ca ne me ferait ni chaud ni froid ;-)
</aimepaslefoot>
char * str = "toto";
Ton str pointe vers une zone mémoire qui est en lecture seule.
Si tu tentes de remplacer une lettre là dedans, tu vas le sentir passer ;-)
Quand tu fais ça:
char* str = new char[4];
str = "toto";
Tu alloues dynamiquement 4 places de char. Ensuite tu écrases l'adresse de cette zone pour faire pointer str vers une autre zone de mémoire qui est en lecture seule. C'est mal :-)
A propos si tu es en C++, tu devrais utiliser des std::string. Avec ça les règles ne sont plus les mêmes et tout est moins compliqué.
ps: autre question subsidiaire, ls PSG est il vraiment condamné?? SNIF!! : (
<aimepaslefoot>
Ca ne me ferait ni chaud ni froid ;-)
</aimepaslefoot>
Merci killian!
Pour le string je sais c'est d'ailleurs ce que je fais toujours.
C'est juste que j'aime me prendre la tête avec les allocations de mémoire! ^^
char* str = new char[4];
str = "toto";
Tu alloues dynamiquement 4 places de char. Ensuite tu écrases l'adresse de cette zone pour faire pointer str vers une autre zone de mémoire qui est en lecture seule. C'est mal :-)
Effectivement, d'ailleurs mis à part le strcpy, il n'y a pas moyen de changer la valeur de ma chaine de caractère str??
: )
Pour le string je sais c'est d'ailleurs ce que je fais toujours.
C'est juste que j'aime me prendre la tête avec les allocations de mémoire! ^^
char* str = new char[4];
str = "toto";
Tu alloues dynamiquement 4 places de char. Ensuite tu écrases l'adresse de cette zone pour faire pointer str vers une autre zone de mémoire qui est en lecture seule. C'est mal :-)
Effectivement, d'ailleurs mis à part le strcpy, il n'y a pas moyen de changer la valeur de ma chaine de caractère str??
: )
Effectivement, d'ailleurs mis à part le strcpy, il n'y a pas moyen de changer la valeur de ma chaine de caractère str??
Nan :-)
Enfin si tu peux le transformer en string.
Nan :-)
Enfin si tu peux le transformer en string.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
...mmmm, si je fais :
ça fonctionne pas??
char t = 't'; char o = 'o'; char* str = new char[4]; *str = t; *(str +1) = o; *(str +2) = t; *(str +3) = o;
ça fonctionne pas??