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 :

variable globale dans le destructeur ?


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    88
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 88
    Par d�faut variable globale dans le destructeur ?
    Bonjour

    je me pose la petite question suivante :

    est ce qu'une variable globale en c++ est consid�r� comme une variable statique( donc pas d'appel dans le destructeur donc si je me rappelle bien ) ou bien comme une variable dynamique ( appel au mot cl� delete dans le destructeur )

    Merci bien

  2. #2
    Membre �m�rite Avatar de MatRem
    Profil pro
    Inscrit en
    D�cembre 2002
    Messages
    750
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2002
    Messages : 750
    Par d�faut
    Heu... il va falloir que tu pr�cises ta question, ou que tu emploies les bons termes.

    Voil� ce que je peux dire :
    Une variable globale est une variable qui se situe dans la port�e globale, qui est donc accessible de partout dans une unit� de traduction, voir m�me de plusieurs unit�s de traduction si elle n'est pas d�clar�e static.

    Ensuite la caract�ristique "static" n'a pas vraiment de rapport avec allocation sur la pile (allocation statique), et allocation sur le tas (allocation dynamique).

    Il faudra peut �tre que tu lises quelques ouvrages sur le c++, pour mieux comprendre tout �a.
    Par exemple :
    http://c.developpez.com/cours/#cours-cpp

  3. #3
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Salut,

    Tout d'abord, il faut savoir qu'il est pr�f�rable, autant se faire se peut, d'�viter l'utilisation de variables globales...

    La raison en est simple: comme n'importe quelle fonction y a acc�s, et peut donc la modifier, tu risques fort d'appeler une fonction qui la modifie alors que ce n'�tait pas ton intention.

    Ensuite, il faut savoir qu'une variable globale n'est quand m�me rien d'autre qu'une variable...

    Elle peut donc �tre un pointeur - qui utilisera l'allocation dynamique de la m�moire - ou non.

    Si c'est un pointeur, il faudra *vraissemblablement* l'initialiser avec new, et penser � en lib�rer la m�moire avec delete, car tu risque �norm�ment de probl�me � l'initialiser en disant qu'elle re�oit l'adresse d'une variable locale.

    Mais si ce n'est pas un pointeur, tu peux l'initialiser de mani�re tout � fait classique, exactement comme une variable locale .

    Il faut enfin faire attention � la r�ciprocit� de ce que l'on dit, car elle est rarement pr�sente:

    Si on peut consid�rer qu'une variable d�clarer avec le sp�cificateur de classe de stockage (storage class specifier) static est une sorte de variable globale (et encore, c'est une variable "globale" assez particuli�re ), on ne peut par contre pas consid�rer que toutes les variables globales sont des variables d�clar�es avec le sp�cificateur de classe de stockage static

    Enfin, il y a le probl�me qu'un seul terme (statique, en l'ocurence) peut s'appliquer � deux choses tout � fait distinctes:

    D'un cot�, il peut s'appliquer en tant que sp�cificateur de classe de stockage - par opposition aux termes auto, extern, register et mutable - et de l'autre, il peut s'appliquer � la mani�re dont la m�moire n�cessaire � la donn�e est allou�e � la variable, par opposition au terme dynamique.

    Dans le premier cas, il indiquera que toutes les instances de la variable utiliseront la m�me adresse m�moire, alors que, dans le second, il indiquera que la m�moire est allou�e sur le tas lors de la d�claration de la variable, et donc lib�r�e une fois que l'on quitte la port�e dans laquelle la variable a �t� d�clar�e
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Variable Globale dans un module de formulaire.
    Par wisiwi dans le forum Access
    R�ponses: 5
    Dernier message: 30/03/2006, 14h03
  2. utilisation des variables global dans tout le projet
    Par EYENGA Jo�l dans le forum VB 6 et ant�rieur
    R�ponses: 2
    Dernier message: 12/01/2006, 10h55
  3. Variables globales dans une classe
    Par vanitom dans le forum C++
    R�ponses: 16
    Dernier message: 14/01/2005, 14h40
  4. Variables globales dans fichiers ent�te
    Par benj_f04 dans le forum C++
    R�ponses: 5
    Dernier message: 13/08/2004, 09h06
  5. Variable "globale" (dans plusieurs templa
    Par mattmat dans le forum XSL/XSLT/XPATH
    R�ponses: 3
    Dernier message: 17/06/2003, 19h22

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