IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Order de déinitialisation incorrect sur Solaris G++


Sujet :

C++

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    screetch
    Invité(e)
    Par défaut Order de déinitialisation incorrect sur Solaris G++
    j'ai le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #include <cstdio>
    struct A
    {
        A() { printf("A()\n"); }
        ~A() { printf("~A()\n"); }
        static A& getA() { static A a; return a; }
    };
     
    struct B
    {
        B() { A::getA(); printf("B()\n"); }
        ~B() { printf("~B()\n"); }
    };
     
    static B b;
     
    int main(int argc, const char *argv[])
    {
        return 0;
    }
    en gros:

    b est une variable globale statique, a est aussi une variable globale (type singleton, si on veut) qui sera initialisée "sur demande" lors du premier appel

    Or, le constructeur de B depend de A; donc on devrait avoir le résultat suivant:

    et c'est ce que j'obtiens sous Windows, sous linux, sous toutes les plates-formes du monde... sauf sous Solaris. Sous solaris j'obtiens le résultat:

    les variables dynamiques sont toutes déinitialisées avant les variables statiques, bien qu'elles aient été construites avant.
    Ca marche nickel sur tous les compilateurs et même sur sunCC sur solaris; mais ca m'arrive avec gcc sur solaris.

    Quelqu'un a plus d'infos sur ce problème??
    Dernière modification par screetch ; 13/09/2011 à 12h14.

Discussions similaires

  1. [AC-2010] Appel de procédure incorrect sur ORDER BY
    Par paidge dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 27/02/2014, 09h27
  2. [Debutant GCC sur Solaris]Erreur de compilation
    Par xxaragornxx dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 13/01/2006, 17h29
  3. C sur Solaris
    Par dinver dans le forum C
    Réponses: 2
    Dernier message: 22/11/2005, 12h09
  4. utilisation de postgresql sur solaris?
    Par champion dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 25/03/2005, 14h27
  5. COMM_FAILURE sur Solaris
    Par knotty dans le forum CORBA
    Réponses: 2
    Dernier message: 21/08/2002, 17h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo