Variables static - destruction

Résolu
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011 - 12 juil. 2004 à 10:50
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 13 juil. 2004 à 18:57
bonjour:

j'aimerai savoir quand les variables statics sont detruites... en fin d'appli (du main, winMain)? ou ailleurs...? à la derniere occurence?

avant, j'utilisais des variables static standard (int, bool)
et donc la question ne se posait pas
maintenant, j'ai utilisé des classes... (des BListeIndir pour ceux qui veulent savoir donc des listes à détruire absoluement pour éviter les memory leaks...)

f()
{
static Toto titi;
...
}

et est-ce la mm réponse si la variables static appartient à une classe.

classe CBob
{
..
private:
static Toto titi;
...
}

Merci
Magic Nono: l'informagicien!
A voir également:

11 réponses

magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
13 juil. 2004 à 13:22
Merci.

En résumé, pour ceux qui veulent la réponse exacte:
l'OS désalloue la mem static allouée en début de prog en faisant appel aux destructeurs à la sortie du soft.

Magic Nono: l'informagicien!
3
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
13 juil. 2004 à 18:57
tu pouvais faire ca

#include

struct Foo
{
Foo()
{
std::cout << "appel du constructeur\n";
}

~Foo()
{
std::cout << "appel du destructeur\n";
}

};

static Foo foo;

int main(){}
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
12 juil. 2004 à 11:10
Tu peux les détruire quand tu quittes ton programme. Pour savoir si elles sont détruites automatiquement, tu n'a qu'a faire un débogage.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
12 juil. 2004 à 11:14
Bon j'ai essayé avec une variable static d'une classe créée avec un new, et elle n'est jamais détruite, c'est à toi de le faire.
J'imagine que pour les variables statiques du C c'est la même chose.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
12 juil. 2004 à 16:17
normal, si tu fait new, C a toi de désallouer en conséquence,

la question, CT sans ptr,
avec directement la classe...

Magic Nono: l'informagicien!
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
12 juil. 2004 à 21:22
une variable statique a la durée de vie d'un programme, en c ou en c++

en c une variable globale spécifiée static limite sa porté au fichier (de meme pour une fonction)

en c++ un attribut de classe (static) est unique (on peut y acceder sans hinstance avec l'orp)
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
12 juil. 2004 à 21:26
Une variable statique en fait ce n'est qu'une variable globale qui n'est visible que dans certains endroits, comme une fonction, un fichier...
Donc comme les variables globales, leur durée de vie est celle du programme.

Patience et longueur de temps font plus que force ni que rage....
0
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
13 juil. 2004 à 02:08
pour detruire une variable statique d'une classe correctement, maintiens un compteur statique du nombre d'objets de ta classe, et détruis ta variable statique qd ce compteur atteint 0.

a+ ;)
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
13 juil. 2004 à 09:31
Je V répéter la question en la spécifiant mieux:
Quand est-ce qu'elle est détruite automatiquement?

Si cela correspond à sa durée de vie, on dira à la sortie du prg...

C bien ça?
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
13 juil. 2004 à 09:54
Elle n'est jamais détruite, je te l'ai dit, c'est à toi de le faire quand tu n'en n'a plus besoin
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
13 juil. 2004 à 10:53
"Je V répéter la question en la spécifiant mieux:
Quand est-ce qu'elle est détruite automatiquement?

Si cela correspond à sa durée de vie, on dira à la sortie du prg..." -> ben oui; dire qu'elle atteint la fin de sa durée de vie, c'est pareil que de dire qu'elle est détruite...
Au début du prog l'OS te fait une place dans la RAM pour ta variable, et à la fin de son exécution le prog est déchargé de la RAM; ta variable n'existe plus.

vecchio56 >> magic_Nono nous parle pas de variables allouées sur le tas, donc on peut pas les détruire comme ça quand on veut.

Patience et longueur de temps font plus que force ni que rage....
0
Rejoignez-nous