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 :

Problème Affectation fonction realloc


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 35
    Points : 26
    Points
    26
    Par défaut Problème Affectation fonction realloc
    Bonsoir, je suis actuellement en deuxième année de classe préparatoire en informatique et ai une série de programmes en C à coder.

    Je suis actuellement sur un exercice de cryptage.
    Dans cet exercice , on a un tableau de 26 lignes sur 5 colones.
    Les poste 1 des colones contiennent tous codes ascii des lettres de a à z (97 à 122).

    Je dois faire remplir ce tableau de code numériques générés aléatoirement. En sachant que si le poste reçoit 0, tous les postes de la même ligne succédant ce poste doivent contenir aussi 0.

    L'algorithme ci dessous fonctionne bien pour les 9, 10 premières lignes mais après le programme plante et je ne sais pourquoi.

    Si vous pouviez m'aider, ce serait vraiment cool. Cela fais 4 heures que je cherche mais sans réponses .....
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tabcompare=realloc(tabcompare,1*sizeof(int));
    realloc prend en paramètre la nouvelle taille entière et non pas un rajout.

  3. #3
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Préférer la forme suivante qui permet de gérer le cas de l'échec de réallocation et d'éviter les fuites mémoires :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    p = realloc(tabcompare,.....);
    if(p != NULL)
    {
       tabcompare = p;
       .......
    }
    else.... // erreur de realloc. l'ancienne allocation est toujours pointée par tabcompare
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  4. #4
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876
    Par défaut
    Citation Envoyé par diogene Voir le message
    Préférer la forme suivante qui permet de gérer le cas de l'échec de réallocation et d'éviter les fuites mémoires :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    p = realloc(tabcompare,.....);
    if(p != NULL)
    {
       tabcompare = p;
       .......
    }
    else.... // erreur de realloc. l'ancienne allocation est toujours pointée par tabcompare
    Là n'est pas son problème, inutile de l'embrouiller
    Par ailleurs je trouve assez discutable cette méthode concernant la lisibilité du code (à la limite en utilisant un wrapper).

  5. #5
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 91
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par |PaRa-BoL Voir le message
    Là n'est pas son problème, inutile de l'embrouiller
    Bonjour,

    Je ne pense pas que cela l'embrouillerait, c'est un moyen efficace pour enlever un risque (et indirectement une hypothèse sur le bogue rencontré) .

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Citation Envoyé par |PaRa-BoL Voir le message
    Là n'est pas son problème, inutile de l'embrouiller
    Par ailleurs je trouve assez discutable cette méthode concernant la lisibilité du code (à la limite en utilisant un wrapper).
    Désolé de te contredire, mais c'est justement la bonne façon de faire. Quand on apprend à programmer, autant bien apprendre dès le départ, non ? Car si apprend mal dès le départ, c'est justement là que les sales habitudes apparaissent. S'il existe autant de logiciels buggués, ce n'est pas un hasard...

  7. #7
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876
    Par défaut
    Je savais que j'allais me faire taper dessus en disant ça

    Évidemment qu'il faut vérifier que l'allocation n'a pas échouée.
    C'est un cas d'école et je suppose qu'il apprendra au fur et à mesure à gérer ce genre d'erreur.

    A ce moment là quitte à montrer les bonnes manière dès le départ, autant montrer quelque chose de lisible/générique.

    Son bug était clairement à un autre endroit.

    En regardant son code, il y a d'autres trucs à revoir et à pointer du doigt mais qui ne sont pas en rapport avec le bug qu'il a rencontré.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 35
    Points : 26
    Points
    26
    Par défaut
    Problème résolu, merci beaucoup.

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

Discussions similaires

  1. problème affectation de paramètres d'une fonction
    Par xavier-Pierre dans le forum Général Python
    Réponses: 4
    Dernier message: 30/06/2012, 06h56
  2. Réponses: 4
    Dernier message: 10/03/2008, 03h59
  3. Problème de fonction
    Par Anduriel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/05/2005, 20h30
  4. Problème avec fonction d'envoie de mail
    Par zyg dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 23/02/2005, 08h48
  5. [Requête] Problème avec fonction "DATE_FORMAT()"
    Par sekiryou dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2005, 21h52

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