stringstream dans un destructeur

Le
Sébastien Fraigneau
Bonjour,

En compilant ce programme sous VC6, j'ai une violation d'acces à la
fermeture du programme (pas d'exception levée, l'erreur est visible
seulement dans la fenêtre de debug de VC):
--
#include <sstream>

class Test
{
public:
~Test()
{
int unNombre = 123456;
std::stringstream str;
str << unNombre;
}

static Test& getInstance()
{
static Test s_test;
return s_test;
}
};

int main()
{
Test test;
Test::getInstance();
return 0;
}
--

Je n'ai pas de problème si unNombre est une chaine de caractère, ni si j'ai
ce genre de chose dans mon main :

int main()
{
Test::getInstance();
return 0;
}

ou

int main()
{
Test test1;
Test test2;
return 0;
}

ou encore

int main()
{
{
Test test;
Test::getInstance();
}
return 0;
}

Etrange ce comportement des stringstream, non ?
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Samuel Krempp
Le #824448
le Tuesday 07 September 2004 12:06, écrivit :

int main()
{
Test test;
Test::getInstance();
return 0;
}
...

Etrange ce comportement des stringstream, non ?


C'est pas ça qu'il faut dire, mais plutôt :
"Etrange ce comportement de VC6, non ?"

Si tu as la possibilité de remplacer VC6 par un 7 avec toutes ses mises à
jour, tu obtiendras un comportement bcp plus proche de ce que dit la norme.
--
Sam

Sébastien Fraigneau
Le #824007
ah ben, ça me rassure. Je me doutais bien que c'était VC6 qui était en
cause. Je vais contourner le problème en attentant d'avoir un compilateur
plus récent.

Merci beaucoup.

"Samuel Krempp" message de news:413f46d6$0$7608$
le Tuesday 07 September 2004 12:06, écrivit :

int main()
{
Test test;
Test::getInstance();
return 0;
}
...

Etrange ce comportement des stringstream, non ?


C'est pas ça qu'il faut dire, mais plutôt :
"Etrange ce comportement de VC6, non ?"

Si tu as la possibilité de remplacer VC6 par un 7 avec toutes ses mises à
jour, tu obtiendras un comportement bcp plus proche de ce que dit la
norme.

--
Sam



Publicité
Poster une réponse
Anonyme