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 :

allocation dynamique et non dynamique...


Sujet :

C

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 411
    Points : 192
    Points
    192
    Par défaut allocation dynamique et non dynamique...
    bonjour,

    voici deux fonction dans lesquels on a déclarer une varible int de deux manières différentes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    fct1()
    {
       widget pwindow;
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    fct2(int a)
    {
       widget *pwindow;
       pwindow=malloc(sizeof(widget));
     
     
    }
    1) dans la premiere fonction fct1(),
    on alloue DANS LA PILE une variable de type widget qui disparaitra donc a la sortie de la fonction
    VRAI ou FAUX ????

    2) dans la fonction fct2(),
    on alloue dynamiquement DANS LE TAS ? ou DANS LA PILE ? une variable
    de type widget.
    le pointeur pwindow disparaitra a la sortie de la fonction mais... est-ce que l'allocation va disparaitre aussi ?

  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 289
    Points : 342
    Points
    342
    Par défaut Re: allocation dynamique et non dynamique...
    Bonjour,
    Citation Envoyé par youp_db
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    fct1()
    {
       widget pwindow;
     
    }
    1) dans la premiere fonction fct1(),
    on alloue DANS LA PILE une variable de type widget qui disparaitra donc a la sortie de la fonction
    VRAI ou FAUX ????
    Vrai, et je rajouterais qu'un prototype incomplet, c'est mal (void fct1(void), c'est pas sorcier à écrire, quand même).
    Citation Envoyé par youp_db
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    fct2(int a)
    {
       widget *pwindow;
       pwindow=malloc(sizeof(widget));
     
     
    }
    2) dans la fonction fct2(),
    on alloue dynamiquement DANS LE TAS ? ou DANS LA PILE ? une variable
    de type widget.
    le pointeur pwindow disparaitra a la sortie de la fonction mais... est-ce que l'allocation va disparaitre aussi ?
    On crée un objet de type pointeur sur widget dans la pile, et on tente de créer un objet de type widget dynamiquement, donc sur le tas. A la fin de la fonction, le pointeur est dépilé; mais le tas n'est pas modifié...

    J'ai pas vérifié si c'est dans la FAQ, mais il y a des cours là-dessus sur le site, tu peux chercher aussi.

  3. #3
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Je vais peut etre reprendre ce qui a été dis mais pour insister et pour lever toute ambiguité.


    1) dans la premiere fonction fct1(),
    on alloue DANS LA PILE une variable de type widget qui disparaitra donc a la sortie de la fonction
    VRAI ou FAUX ????
    VRAI.

    2) dans la fonction fct2(),
    on alloue dynamiquement DANS LE TAS ? ou DANS LA PILE ? une variable
    de type widget.
    LE TAS.
    Et le pointeur bien entendu sur la pile.

    le pointeur pwindow disparaitra a la sortie de la fonction mais... est-ce que l'allocation va disparaitre aussi ?
    NON.Pour cela il faudrait faire un free.
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: allocation dynamique et non dynamique...
    Citation Envoyé par youp_db
    voici deux fonction dans lesquels on a déclarer une varible int de deux manières différentes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    fct1()
    {
       widget pwindow;
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    fct2(int a)
    {
       widget *pwindow;
       pwindow=malloc(sizeof(widget));
     
     
    }
    1) dans la premiere fonction fct1(),
    on alloue DANS LA PILE une variable de type widget qui disparaitra donc a la sortie de la fonction
    VRAI ou FAUX ????
    Vrai. (on dit 'mémoire automatique'. La 'pile' est une des façons d'implémenter la mémoire auto).
    2) dans la fonction fct2(),
    on alloue dynamiquement DANS LE TAS ? ou DANS LA PILE ? une variable
    de type widget.
    malloc() demande une allocation en mémoire allouée. Il retourne l'adresse du bloc ou NULL en cas d'echec. (Le 'tas' est une des façons d'implémenter la mémoire allouée).
    le pointeur pwindow disparaitra a la sortie de la fonction mais... est-ce que l'allocation va disparaitre aussi ?
    Non, bien sûr. Sinon, comment fonctionnerait malloc() ?

    L'usage est de retourner l'adresse du bloc alloué.
    Pas de Wi-Fi à la maison : CPL

Discussions similaires

  1. [STL]vector, allocation non dynamique.
    Par johnnyjohnny dans le forum SL & STL
    Réponses: 5
    Dernier message: 11/07/2007, 14h56
  2. Réponses: 28
    Dernier message: 27/05/2007, 15h16
  3. Réponses: 10
    Dernier message: 24/05/2007, 09h27
  4. Echec d'allocation d'un tableau dynamique
    Par le y@m's dans le forum WinDev
    Réponses: 1
    Dernier message: 09/05/2007, 16h24
  5. création non dynamique de plusieurs form MDI
    Par chamamo dans le forum C++Builder
    Réponses: 7
    Dernier message: 21/10/2006, 16h29

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