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 :

Stockage noms des variables


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Septembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2016
    Messages : 11
    Points : 15
    Points
    15
    Par défaut Stockage noms des variables
    Bonjour,
    je voudrais savoir où sont stockées les noms des variables ? Dans les registres ?
    Merci.

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Les noms de variables ne sont pas stockées (ça n'a d'ailleurs pas beaucoup de sens de garder leur nom ) , les variables sont par contre stockée sur la pile.

  3. #3
    Membre expérimenté
    Avatar de sambia39
    Homme Profil pro
    No Comment
    Inscrit en
    Mai 2010
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : No Comment
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 543
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonsoir,

    Les variables, certes, sont stockées sur la pile, mais de façon temporaire. Je m'explique, à chaque fois que vous déclarez une variable, celle-ci est placée/mise sur la pile et à chaque fois que l'instruction a été exécutée ou que votre fonction a fini sa tâche, toutes les variables poussées sur la pile sont libérées. En d'autres termes, elles sont supprimées de la pile, mais existent uniquement quand la fonction dans laquelle est a été créé est en cours d'exécution, donc perdues. Lorsqu'une variable de la pile est libérée, l'endroit où elle est stockée est disponible pour d'autres variables. Par conséquent, les variables de la pile sont donc de nature locale (sans rentrer dans les détails, cela est lié au concept de portée variable).

    Pour résumer, la pile est une région spécifique de la mémoire de votre ordinateur qui stocke les variables temporaires créées par chaque fonction (cela est valable également pour la fonction main). La pile en elle-même est une structure de données en "LIFO ", c'est-à-dire "dernier entré, premier sorti" géré par le CPU de manière très précise. Donc vous aurez compris, la pile s'agrandit et se rétrécit il n'est donc pas nécessaire que vous gériez la mémoire vous-même. Les variables sont allouées et libérées automatiquement.

    Cependant, il faut faire attention. La pile a des limites : cela dépend de votre architecture et système d'exploitation. La taille de la pile est limitée (tout comme la taille des types de vos variables), ce qui n'est pas le cas pour le tas qui n'a pas ce problème (plutôt d'ordre physique donc lié à la mémoire physique réelle).
    À bientôt
    Celui qui peut, agit. Celui qui ne peut pas, enseigne.
    Il y a deux sortes de savants: les spécialistes, qui connaissent tout sur rien,
    et les philosophes, qui ne connaissent rien sur tout.
    George Bernard Shaw

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 451
    Points : 43 097
    Points
    43 097
    Par défaut
    Une fois compilé, un programme n'intègre plus les noms de variables. Celles-ci sont transformé en adresses mémoires appelés par les instructions du CPU. Le CPU va lire ou écrire ces adresses ou le contenu de la mémoire à ces adresses dans ses registres pour effectuer ses traitements.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Il faut quand même noter qu'un programme compilé avec les informations de debug contient des informations à propos de fonctions, variables et autres types. Notamment des noms.

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 451
    Points : 43 097
    Points
    43 097
    Par défaut
    oui, mais cela ne fait pas vraiment partie du programme, c'est des méta-données qui sont en plus supprimable avec la commande strip.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Janvier 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2018
    Messages : 8
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par chocolat88 Voir le message
    Bonjour,
    je voudrais savoir où sont stockées les noms des variables ? Dans les registres ?
    Merci.
    Moi je te conseille d'allez regarder cette vidéo :

  8. #8
    Nouveau membre du Club Avatar de toinexplore
    Homme Profil pro
    Etudiant/Passionné SQL-C
    Inscrit en
    Décembre 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant/Passionné SQL-C
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2017
    Messages : 38
    Points : 32
    Points
    32
    Par défaut
    l'adressage c'est quand on met le & ?

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int main() 
    {
        int nb
        printf("\n Saisir un entier nb");
        scanf("%d",&nb);
    }

  9. #9
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 451
    Points : 43 097
    Points
    43 097
    Par défaut
    une variable est une zone mémoire réservée. La taille de cet emplacement dépendant du type de la variable.

    En C, le fait de mettre un & devant un nom de variable va permettre d'utiliser son adresse plutôt que son contenu. C'est un cas particulier. Dans l'exemple, scanf attend l'adresse d'une variable et non celle-ci.

    Pour aller plus loin, il faut connaitre les pointeurs.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  10. #10
    Nouveau membre du Club Avatar de toinexplore
    Homme Profil pro
    Etudiant/Passionné SQL-C
    Inscrit en
    Décembre 2017
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant/Passionné SQL-C
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2017
    Messages : 38
    Points : 32
    Points
    32
    Par défaut
    Bonjour, merci pour ta réponse

    Pour l'instant notre prof nous a dit que c'était trop compliqué pour nous et que nous n'en étions pas encore là, y'a t-il lien pointeur-mémoire ?

  11. #11
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 451
    Points : 43 097
    Points
    43 097
    Par défaut
    En C, un pointeur est une variable qui contient une adresse mémoire. Si tu veux en savoir plus, lis le lien que j'ai mis.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  12. #12
    Membre à l'essai
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Septembre 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2016
    Messages : 11
    Points : 15
    Points
    15
    Par défaut
    bonjour
    il peut y avoir plusieurs pile par programme ?
    merci

  13. #13
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Il n'y a qu'une seule pile par programme.

  14. #14
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Plus exactement, il y a un contexte par thread. On peut donc avoir « plusieurs piles » par processus.

  15. #15
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Et sur un OS qui supporte les fibres (comme les Windows récents) on peut avoir une pile par fibre.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Changer le Nom des Variables
    Par suistrop dans le forum SAS Base
    Réponses: 2
    Dernier message: 06/11/2008, 14h16
  2. Mise à jour des noms des variables
    Par stefsas dans le forum SAS Base
    Réponses: 1
    Dernier message: 09/06/2008, 11h28
  3. récupération des noms des variables POST
    Par taffMan dans le forum Langage
    Réponses: 2
    Dernier message: 19/02/2008, 21h13
  4. Réponses: 2
    Dernier message: 20/05/2007, 18h22
  5. nom des variables pour se faciliter la vie
    Par Slumpy dans le forum VB.NET
    Réponses: 2
    Dernier message: 28/03/2007, 10h31

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