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 :

Mémoire et chaines de caractères ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Par défaut Mémoire et chaines de caractères ?
    Bonjour,

    j'aimerais avoir une précision sur la gestion de la mémoire pour les chaines de caractères.
    Dans le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    char *chaine;
    //1ere initialisation
    chaine = "Une phrase qui a tendance à s'allonger et a être un peu longue.";
    ...
    chaine = "Phrase courte";//2eme initialisation
    comment est ce que ces 2 initialisations sont elles gérées en mémoire ?
    Qu'advient-il des caractères de la 1ere initialisation, la mémoire pour cette chaine
    est elle libérée automatiquement ?

    Merci

  2. #2
    Membre expérimenté
    Inscrit en
    Septembre 2006
    Messages
    414
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 414
    Par défaut
    je ne sais pas trop...mais ce que tu pourrais faire pour le verifier, ce serai de stocker l'adresse contenu dans chaine apres la premiere utilisation,
    de verifier si cette adresse a changé apres la deuxieme utilisation, si c'est le cas, verifier ce que contient l'ancienne adresse !
    A mon avis, elle n'est pas libérée...(en tout cas, pas avant la fin du programme)

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par tintin72
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    char *chaine;
    //1ere initialisation
    chaine = "Une phrase qui a tendance à s'allonger et a être un peu longue.";
    ...
    chaine = "Phrase courte";//2eme initialisation
    comment est ce que ces 2 initialisations sont elles gérées en mémoire ?
    http://emmanuel-delahaye.developpez....aine_litterale

    C'est un peu lourd comme définition, et il faut la relire plusieurs fois. Désolé, je ne sais pas faire mieux en restant juste et précis.
    Qu'advient-il des caractères de la 1ere initialisation, la mémoire pour cette chaine
    Rien. Il sont toujours là, mais comme le tableau de char est anonyme, ils sont inaccessibles (à moins qu'on ai sauvegardé l'adresse).
    est elle libérée automatiquement ?
    Non. Aucune variable statique n'est libérée avant la fin de l'exécution du programme.

    http://emmanuel-delahaye.developpez....es.htm#donnees
    http://emmanuel-delahaye.developpez....es.htm#tabchar

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. Réponses: 5
    Dernier message: 16/03/2011, 09h46
  3. Réponses: 9
    Dernier message: 17/01/2003, 11h45
  4. Lire Une Chaine De Caractères
    Par Jonathan_Korvitch dans le forum C
    Réponses: 12
    Dernier message: 07/01/2003, 05h37
  5. Réponses: 2
    Dernier message: 06/12/2002, 07h50

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