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 de structures


Sujet :

C

Vue hybride

fr_knoxville Allocation dynamique de... 06/05/2003, 11h46
pantin Disons que l'interet d'une... 06/05/2003, 11h57
kacedda Salut Je pense pas quil... 06/05/2003, 12h02
fr_knoxville Ok merci pour ces reponses.... 06/05/2003, 12h05
D[r]eadLock Tout a fait d'accord avec... 06/05/2003, 12h39
Nasky int nombre; int* tableau;... 06/05/2003, 12h39
fr_knoxville si je comprend bien ,si je... 06/05/2003, 12h55
kacedda Merci a Nas pour la... 06/05/2003, 15h22
fr_knoxville kacedda : En fait je veux... 06/05/2003, 21h59
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 4
    Par défaut Allocation dynamique de structures
    Bonjour a tous. J'apprends actuellement le C. Bien qu'ayant lu la F.A.Q, j'aurais voulu savoir a quel moment l'allocation dynamique d'une structure etait preferable a une declaration statique. Je vous remercie d'avance pour vos reponses.

  2. #2
    Membre confirmé
    Inscrit en
    Février 2003
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 39
    Par défaut
    Disons que l'interet d'une allocation dynamique est d'economiser de l'espace memoire lorsque tu n'as pas réellement besoin de ta structure.

    Si par exemple, tu as constamment besoin d'une structure, mieux faut l'instancier de manière statique. par contre, si par exemple, tu travailles sur des listes chainees, tu ne peux connaitre à l'avance le nombre de cellules que tu vas creer, il est donc plus interessant de les creer quand le besoin s'en fait sentir.

    Donc pour conclure, si tu as peu de structure et que tu sais combien tu en necessites, instancie les en dur. Si tu as besoin de beaucoup de strucure mais pas toutes en meme temps ou encore, si tu ne sais pas de combien de strucure tu vas avoir besoin alors vas y a grand coup de mallo. Mais attention, le C n'est pas comme java, il n'y a pas de garbage collector, c'est a toi de faire le boulot proprement, c'est à dire de detruire les objets que tu as cree dynamiquement en memeoire (avec free). Si tu ne le fais pas, et si tes programmes doivent tourner un certain temps, il marcheront aussi bien que windows....

    Donc n'oubie pas de nettoyer quand tu n'as plus besoin (meme avant de sortir)....

    Bon courage. bye

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Par défaut
    Salut

    Je pense pas quil sagisse de preference
    C surtout une histoire ded besoin

    Allocation statique : Tu es sur de cec ke tu ve
    Allocation dynamique : Ton besoin varie

    Un cas simple:
    Par exemple un user veut rentrer ses notes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int notes[5];  // La tu es sur ke le user na que 5 notes
     
    sinon si T pas sur:
    int nombre;
    int* tableau;
    scanf("%d",nombre);
     
    tableau=(int)malloc(sizeof(int0)*nombre);
    Voila ca depend vraiment des besoin perso C pas une preference

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 4
    Par défaut
    Ok merci pour ces reponses. Les autres commentaires sont les bienvenus

  5. #5
    Membre émérite
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Par défaut
    Tout a fait d'accord avec kacceda ! L'utilisation dynamique t'es en fait impose par ton programme ! Quand tu vois que tu ne peux pas faire autrement, tu y passe. Quand tu ne peux pas fixer a la compilation la taille de tes tableaux. Rq: quand tu ne peux meme pas donner la taille de ton tableau dynamique car elle change au cours du prog, tu peux utiliser realloc !

    Il est vrai qu'il reste le probleme des chaines de caracteres, et les entrees interactive. Mais c'est generalement soit :
    - dimentionnable (tu fixes toi meme la taille des entrees (par exemples 1024/2048 voire plus (comme par exemple 32k pour la ligne de commande du shell)). Sinon, tu peux fixer la taille des lignes lues et tu lis ligne par ligne.
    - passe en parametre de ton programme (et dans ce cas, c'est pas toi qui le gere )

    Sinon, c'est dans quel cas que tu veux utiliser les tabeaux ?

  6. #6
    Membre émérite
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Par défaut
    Citation Envoyé par kacedda
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int notes[5];  // La tu es sur ke le user na que 5 notes
     
    sinon si T pas sur:
    int nombre;
    int* tableau;
    scanf("%d",nombre);
     
    tableau=(int)malloc(sizeof(int0)*nombre);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int nombre;
    int* tableau;
    scanf("%d",&nombre); /* tavais oublier le & */
     
    tableau=(int*)malloc(sizeof(int)*nombre);/* c'est (int*) avec asterique */
    Et je pense que pour la question, c'est ca, si tu connais *tout* , tu peux faire une déclaration statique, sinon, un pointeur et tu alloues dynamiquement la mémoire au fur et à mesure de tes besoins ...
    Je sais pas si c'est dans le sujet exactement, mais si tu veux passer la strucutre, il est preferable de passer un pointeur sur cette sutrucutre que la structure elle meme (sinon, t'auras une copie de la strucutre).

    Nas'

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 4
    Par défaut
    si je comprend bien ,si je veux controler la durée de vie d'une structure, une allocation dynamique est l'unique solution ?

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Par défaut
    Merci a Nas pour la correction Bien vu
    (je fai pas gaffe et jecris trop vite donc je me trompe)

    Sinon pou fr_knoxville:
    Oui je pense que lallocation dynamique est la seule solution

    Mais ta une ID presicec de ce ke tu ve faire? Pourkoi tu ve controler sa duree de vie? par securite?

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 4
    Par défaut
    kacedda : En fait je veux juste connaitre exactement les differentes possibilités qu'offre l'allocation dynamique et quand utiliser cette possibilité. En tout cas merci pour les reponses.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/05/2014, 20h25
  2. Réponses: 7
    Dernier message: 02/09/2009, 22h39
  3. Réponses: 67
    Dernier message: 13/02/2007, 18h08
  4. Allocation dynamique de structure
    Par malves dans le forum C
    Réponses: 5
    Dernier message: 02/11/2006, 12h07
  5. Allocation dynamique tableau dans structure
    Par chental dans le forum C
    Réponses: 2
    Dernier message: 03/08/2006, 09h03

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