Bonjour,

Actuellement, j'ai une erreur avec ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
arg << "foo"
std::string c;
arg >> c;
Alors que ce code marche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
const char * const foo = "foo";
arg << foo;
std::string c;
arg >> c;
Alors qu'en théorie, au niveau assembleur, cela devrait être exactement la même chose.
Or je ne copie que le pointeur vers la chaîne de caractères dans "arg" puis j'essaye de copier la chaîne de caractère dans c.

Sauf que le pointeur stocké est "inaccessible" dans le premier cas d'après le débogueur ce qui génère une segfault lorsque je fais : arg >> c.

Si je fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
const char * c;
arg >> c;
std::cout << c << std::endl;
C'est à dire juste une copie du pointeur stocké dans arg vers c, j'ai aussi, dans le premier cas, une erreur de segmentation.

J'ai l'impression que "foo" n'est pas stocké dans le même segment mémoire d'un cas à l'autre... est-ce que vous auriez une explication à cela?