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 averti
    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
    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 confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    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 226
    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 très actif
    Avatar de sambia39
    Homme Profil pro
    No Comment
    Inscrit en
    Mai 2010
    Messages
    548
    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 : 548
    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

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 256
    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 : 18 256
    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
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    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
    18 256
    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 : 18 256
    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 du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Janvier 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    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
    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
    Membre averti 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 : 32
    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
    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
    18 256
    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 : 18 256
    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
    Membre averti 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 : 32
    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
    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
    18 256
    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 : 18 256
    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 averti
    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
    Par défaut
    bonjour
    il peut y avoir plusieurs pile par programme ?
    merci

  13. #13
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    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 226
    Par défaut
    Il n'y a qu'une seule pile par programme.

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

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    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