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 :

Realloc


Sujet :

C

Vue hybride

theshark85 Realloc 05/05/2006, 12h28
crocodilex Tout est dans le man :... 05/05/2006, 12h33
theshark85 Ouai je savais déjà tout ça,... 05/05/2006, 14h09
Emmanuel Delahaye Le langage C défini... 05/05/2006, 14h58
theshark85 Je vouslais savoir ceci, par... 08/05/2006, 14h22
Franck.H Peut-être en récupérant les... 08/05/2006, 14h26
Emmanuel Delahaye Tu peux le redire en français... 08/05/2006, 14h38
theshark85 En gros, j'ai appris que... 09/05/2006, 11h59
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 163
    Par défaut Realloc
    Je voulais savoir si quelqu'un peut m'expliquer comment realloc fonctionne aux niveaux de la mémoire en faite?
    Je sais que ça réalloue une zone comme son l'indique, mais la réallocation comment se fait-elle?

    Merci

  2. #2
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par theshark85
    Je voulais savoir si quelqu'un peut m'expliquer comment realloc fonctionne aux niveaux de la mémoire en faite?
    Je sais que ça réalloue une zone comme son l'indique, mais la réallocation comment se fait-elle?

    Merci
    Tout est dans le man :
    http://man.developpez.com/man3/realloc.3.php

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 163
    Par défaut
    Ouai je savais déjà tout ça, moi ce qui m'interessait c'était de comprendre un peu plus loin, savoir pourquoi quand on fait un realloc en size +1 et un realloc en size +1000 ça va pas réagir de la meme façon.

    Si cela est du au faite que quand on realloue la memoire, il faut que la mémoire disponible soit contigue à l'ancienne place prise ...

  4. #4
    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 theshark85
    Je voulais savoir si quelqu'un peut m'expliquer comment realloc fonctionne aux niveaux de la mémoire en faite?
    Je sais que ça réalloue une zone comme son l'indique, mais la réallocation comment se fait-elle?
    Le langage C défini l'interface de la fonction et son comportement. Pas les détails internes de réalisation qui n'interessent que ceux qui veulent implémenter la fonction.
    .
    Il n'y a donc pas de réponse définitive. Il y a certainement différentes façons de faire, mais tout dépend de l'implémentation. Pourquoi tu veux connaître ces détails ?

    Si tu y tiens, cherches des implémentations de realloc() sur le web. est ton ami...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 163
    Par défaut
    Je vouslais savoir ceci, par curiosité et pour comprendre certaine chose.
    Comme par exemple pourquoi quand l'on fait un realloc, et quon regarandi en faisant +1 ou +200 ça ne reagit pas de la memem maniere.

    Peut etre un peu trop poussé ma question.

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Peut-être en récupérant les source de la GLibC, sait-on jamais !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  7. #7
    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 theshark85
    Je vouslais savoir ceci, par curiosité et pour comprendre certaine[] chose[].
    Comme par exemple pourquoi quand l'on fait un realloc, et qu[]on regarandi en faisant +1 ou +200 ça ne reagit pas de la memem maniere.

    Peut etre un peu trop poussé[] ma question.
    Tu peux le redire en français ? Tu es limite incompréhensible...

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 163
    Par défaut
    En gros, j'ai appris que quand on fait un realloc, si on a un tableau de 10 et q'uon veut un tableau de 10+1, il a chercher une zone mémoire de 11. Puis il copie la zone de 10 dans celle de 11 et ma réallocation ets faite.


    Pour ma part, je fais un realloc de tableau de , en faisant grossir mon tableau de taillestruct+1 a chaque nouvelle valeur. Au bout d'un moment le realloc plante. Alors que si je fais mon realloc, en grossissant mon tableau en faisant taillestruct+200 (quand il faut bien sur pas pour chaque nouvelel valeur) ça ne plante pas. Ne renvoie pas NULL le realloc.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 163
    Par défaut
    VU_nbtab=> nombre d'element dans le tableau
    VU_alloc=> nombre de zone alloue


    Ne plante pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(Liste[PosCol]->VU_nbtab==Liste[PosCol]->VU_alloc)
          {
            Liste[PosCol]->VU_alloc=Liste[PosCol]->VU_alloc+500;/*On fait +500 car si on fait +1 quand il faut traiter de gros fichier probleme de realloc*/
            Liste[PosCol]->tab_VU= (VALEUR**) realloc (Liste[PosCol]->tab_VU,(Liste[PosCol]->VU_alloc+1) * sizeof(VALEUR*));
          }
    Plante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Liste[PosCol]->tab_VU= (VALEUR**) realloc (Liste[PosCol]->tab_VU,(Liste[PosCol]->VU_nbtab+1) * sizeof(VALEUR*));

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

Discussions similaires

  1. Quel est l'équivalent de realloc en C++ ?
    Par xavlours dans le forum C++
    Réponses: 4
    Dernier message: 13/05/2005, 13h36
  2. Malloc et realloc
    Par Triomen dans le forum C
    Réponses: 6
    Dernier message: 21/02/2005, 19h20
  3. [Debutant]reallocation de memoire d'un tableau de type perso
    Par killerjeff dans le forum Débuter
    Réponses: 3
    Dernier message: 04/08/2004, 17h09
  4. Re-problème avec realloc() (désolé)
    Par Yabo dans le forum C
    Réponses: 8
    Dernier message: 30/07/2003, 22h07
  5. Réponses: 4
    Dernier message: 03/12/2002, 16h47

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