Citation :
Comment doit on doit libérer cette mémoire? A la fin de l'appli?
|
a toi de voir! Une réponse satisfaisante pourrait être: quand tu n'en a plus besoin...
Il faut voir une variable membre statique de la même façon qu'un variable globale en C, mais avec une restriction des droits d'accès définis pas sa définition au sein de la classe.
Citation :
je trouve cette solution risquée car elle oblige l'utilisateur de la classe à penser de libérer cette mémoire même une fois tous les obj. libérés.
|
C'est pour cette raison que tu verras souvent une méthode statique de classe du type static void release() qui permet de désallouer les variables staiques une fois que l'on n'en a plus besoin. Mais il n'y a pas une seule et bonne réponse.
Citation :
Sinon à quel moment est initialisé ce membre statique quand l'initialisation est placée dans le .cpp en dehors de la portée de la classe.
|
pas compris la question. Qu'est-ce que tu entends par "en dehors de la portée de la classe"?
Normalement, une variable statique (membre ou pas membre) doit être déclarée une fois (et une seule) dans un fichier source. L'instancatiation se fait au chargement du module concerné (ie le lancement du programme ou le chargement d'une bibliothèque dynamique).
Citation :
A la première instanciation ?
|
cela n'a aucun sens. Une variable membre statique n'existe qu'à 1 seul exemplaire et n'est en rien attaché à une instance de la classe (et donc son constructeur). Encore une fois, il faut voir une variable membre statique comme une variable C globale avec des droits d'accès particuliers.
Message édité par SoWhatIn22 le 02-02-2004 à 13:14:33