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 ou taille prédéfinie ?!


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 40
    Par défaut Realloc ou taille prédéfinie ?!
    Bonjour à tous,

    dans le cadre d'un projet, j'utilise à plusieurs reprises des tableaux de chaînes de caractères, qui n'ont pas de tailles prédéfinies. Le mieux serait que leurs tailles dépendent du besoin. Mais j'hésite entre utiliser un realloc (qui pourrait etre couteux en appel systeme, etc?) ou définir une taille maximale, donc élevée (auquel cas on réserve souvent une mémoire qui ne sera pas utile)...

    Qqun saurait ce qui est le mieux à faire?!

    Merci d'avance.

    L.

  2. #2
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Salut,

    Le meilleur moyen que j'ai vu, est de doubler la taille allouée quand la taille initiale est trop petite, tout en ayant une taille de début suffisante pour les cas les plus courants.

    Taille de départ 250
    Chaine de 251 -> doubler la taille avec realloc -> 500
    Chaine de 501 -> 1000

    Etc

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 40
    Par défaut
    ah oui... c'est bien pensé ça

  4. #4
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Bonjour,


    Citation Envoyé par KiLVaiDeN
    Salut,
    Taille de départ 250
    Chaine de 251 -> doubler la taille avec realloc -> 500
    Chaine de 501 -> 1000
    Etc
    Si tu connais la taille de ta chaine et que tu fais un realloc, alors autant faire un realloc ajusté à la bonne taille !!!!!!
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  5. #5
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Citation Envoyé par ToTo13
    Bonjour,




    Si tu connais la taille de ta chaine et que tu fais un realloc, alors autant faire un realloc ajusté à la bonne taille !!!!!!
    Ca me parrait évident, si c'était trop simple je ne pense pas qu'il aurait posé la question

    J'imagine qu'il parse un fichier ou autre, et qu'il génère une chaine dynamiquement, en tout cas c'est ce que j'ai imaginé..

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 40
    Par défaut
    he bien, c'est simple:
    j'ai besoin d'un char** tab_chaines pour un tableau de chaines.
    Mais je ne sais pas à l'avance cb je vais y ranger de chaines (mais qd je les range, je connais la taille des chaine donc pas de pb pr le malloc du tab_chaine[n]). Le pb c le malloc du tab_chaines. Si je n'ai plus assez de place il faut bien que je réalloue, donc je pense que doubler à chaque fois est une bonne idée oui...

    (au fait, je sais que c'est rare ici mais c'est "elle" )

  7. #7
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Question : pourquoi ne sais-tu pas combien de chaines tu vas y ranger dès le départ ?

    PS : Désolé pour l'erreur, Mademoiselle

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 40
    Par défaut
    ben par exemple ds la cas ici présent, je liste le contenu d'un répertoire, et je place les noms de fichiers ds le tableau...
    oui bon, ici je le connais, pas initialement mais je peux faire un realloc avec le bon nombre d'element (valeur retour de scandir)
    MAIIIIIIIIS
    dans d'autres cas... je ne le connais pas:
    exemple: lister des arguments entrés par un utilisateur au clavier.

Discussions similaires

  1. reallocation matrice et taille
    Par fathese dans le forum C
    Réponses: 2
    Dernier message: 30/12/2014, 14h56
  2. Réponses: 3
    Dernier message: 11/06/2012, 05h41
  3. Récupérer la largeur d'un DIV qui na pas de taille prédéfinie.
    Par deli2025 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 10/03/2011, 17h17
  4. Modification de la taille d'un tableau 3D avec realloc
    Par Bobsleigh dans le forum Débuter
    Réponses: 8
    Dernier message: 10/11/2009, 21h01
  5. Tableau de taille non prédéfinie
    Par pythagore3_14 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/08/2008, 14h34

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