S'il vous plaît aider,variables statiques pour libérer
Le problème: coredumps, dans le code suivant:
J'ai un SomeOtherClass de classe abstraite, et ont dérivé de ce SomeOtherClassImpl.
Voici le code qui provoque la peine:
class MyClass
{
public:
void someFunction()
{
myVector().push_back(someOtherClassDefault());
}
private:
static std::vector<SomeOtherClass const *> & myVector()
{
static std::vector<SomeOtherClass const *> theVector;
return theVector;
}
static SomeOtherClass const * someOtherClassDefault()
{
static SomeOtherClassImpl theDefault;
return &theDefault;
}
};
J'ai quelques variables statiques de MyClass type dans d'autres unités de traduction.
Le problème est étrange car une erreur de segmentation se produit lorsque le programme se termine. Bien sûr, la Default peut être désaffectée avant le Vector, mais quelle est la différence? Les deux ont été désaffectés quand le main est déjà fait.
Vous nous aiderez beaucoup.
Je ne vois rien de manifestement faux avec le code ci-dessus, donc vous devez probablement fournir une version réduite de 'SomeOtherClassImpl'. Si vous exécutez votre application dans un débogueur, quel est le backtrace quand le seg-fault se produit? –
Et vous pensez que ce qui se passe après que "main is already done" ne vous concerne pas? –
Nikolai, merci pour ton commentaire motivant :) mais tu as raison, c'est mon affaire, et c'est en fait mon erreur. –