ostringtream.str().c_str() ?? - C++ - Programmation
Marsh Posté le 18-11-2003 à 11:44:13
ah, c'est un probleme de portée de l'objet temporaire string créé entre odest.str() et .c_str() qui a été détruit de suite apres l'appel => le pointeur cstr1 est devenu invalide, est-ce exact ?
Marsh Posté le 18-11-2003 à 11:46:23
BlackGoddess a écrit : ah, c'est un probleme de portée de l'objet temporaire string créé entre odest.str() et .c_str() qui a été détruit de suite apres l'appel => le pointeur cstr1 est devenu invalide, est-ce exact ? |
C'est probablement ça en effet.
Marsh Posté le 18-11-2003 à 12:42:30
c'est ça
écris alors
const string &s( odest.str() );
const char* cstr2 = s.c_str(); // ca fonctionne
Marsh Posté le 18-11-2003 à 13:29:04
ah, oui, ca evite une 2eme copie si j'ai bien compris, merci
Marsh Posté le 18-11-2003 à 21:14:56
Je me demande donc si d'un compilateur a l'autre la notion de portee d'objet temporaire change.
Marsh Posté le 18-11-2003 à 22:47:21
peut-etre a l'execution la zone de mémoire qui etait réservé pour l'objet temporaire n'a pas été écrasée et est toujours lisible ?
Marsh Posté le 18-11-2003 à 22:53:37
BlackGoddess a écrit : peut-etre a l'execution la zone de mémoire qui etait réservé pour l'objet temporaire n'a pas été écrasée et est toujours lisible ? |
c'est sale
Marsh Posté le 18-11-2003 à 23:44:05
quand tu dis que ca ne fonctionne pas est ce que tu as une erreur a la compilation ou bien est ce le resultat qui est faux?
Marsh Posté le 18-11-2003 à 23:44:52
dag elg a écrit : quand tu dis que ca ne fonctionne pas est ce que tu as une erreur a la compilation ou bien est ce le resultat qui est faux? |
ça compile forcément
Marsh Posté le 19-11-2003 à 11:15:48
oui, c'est le réultat qui est eronné, et ca crash en aval (a l'execution)
Marsh Posté le 18-11-2003 à 11:37:51
Bonjour,
j'ai un petit truc qui m'a perturbé :
voila, je n'arrive pas a comprendre ?
---------------
-( BlackGoddess )-