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 :

erreur de segmentation


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut erreur de segmentation
    bonjour à tous ,
    J'ai un probleme de segmentation dans mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    int main(int argc, char *argv[])
    {
       remplirTableauFichier();
    }
    
    void remplirTableauFichier ()
    {
     	struct char_fbtAllocator *pAllocCaracs1=NULL, *pAllocCaracs2=NULL, *pAllocCaracs3=NULL, *pAllocCaracs4=NULL;
    	struct int_fbtAllocator *pAllocLignes1=NULL, *pAllocLignes2=NULL, *pAllocLignes3=NULL, *pAllocLignes4=NULL;
    	size_t *pTailles1=NULL, *pTailles2=NULL,*pTailles3=NULL,*pTailles4=NULL, nbMots1=0, nbMots2=0,nbMots3=0,nbMots4=0;
    	size_t nbCaracs1=0,nbCaracs2=0, nbCaracs3=0, nbCaracs4=0;
    	int nbLignes1=0, nbLignes2=0,nbLignes3=0, nbLignes4=0;
    	nbMots1 = SommeTailles1fr(pTailles1);
    	nbMots2 = SommeTailles2fr(pTailles2);
    	nbMots3 = SommeTailles1en(pTailles3);
        nbMots4 = SommeTailles2en(pTailles4);
    	pAllocCaracs1 = char_CreateFbtAllocator(nbCaracs1);
    	pAllocCaracs2 = char_CreateFbtAllocator(nbCaracs2);
    	pAllocCaracs3 = char_CreateFbtAllocator(nbCaracs3);
    	pAllocCaracs4= char_CreateFbtAllocator(nbCaracs4);
    	if(pAllocCaracs1==NULL || pAllocCaracs2==NULL|| pAllocCaracs3==NULL|| pAllocCaracs4==NULL)
        goto LNettoyage;
    	pAllocLignes1 = int_CreateFbtAllocator(nbLignes1);
    	pAllocLignes2 = int_CreateFbtAllocator(nbLignes2);
    	pAllocLignes3 = int_CreateFbtAllocator(nbLignes3);
    	pAllocLignes4 = int_CreateFbtAllocator(nbLignes4);
    	if(pAllocLignes1==NULL || pAllocLignes2==NULL|| pAllocLignes3==NULL|| pAllocLignes4==NULL)
    		goto LNettoyage;
    }
    je vois pas pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    size_t SommeTailles1fr(size_t const *pcTailles)
    {
    	size_t ret = 0;
     
    		size_t nouvRet = ret + pcTailles[1];
    		if(nouvRet < ret)
    		{
    			fprintf(stderr, "Les tailles des differents fichiers binaires font un depassement!\n");
    			exit(EXIT_FAILURE);
    		}
    		ret = nouvRet;
     
    	return ret;
    }
    Une idée svp? merci

  2. #2
    Expert confirmé
    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
    Par défaut
    La fonction SommeTailles1fr() ne prend pas en compte le cas où pcTailles est NULL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    size_t nouvRet = ret + pcTailles[1];
    ce qui est le cas !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	size_t *pTailles1=NULL,....
    ....
    	nbMots1 = SommeTailles1fr(pTailles1);
    Il faut que l'argument pcTailles soit l'adresse du début d'un tableau d'au moins deux éléments

  3. #3
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut
    Re,
    J'ai une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(CompterToutesTablesFichBinaire1fr(&pTailles1, &nbCaracs1, &nbLignes1)<0)
    attention : pointer targets in passing argument 3 of ‘CompterToutesTablesFichBinaire1fr’ differ in signedness|
    JE vois pas trop
    Une idée svp?
    merci

  4. #4
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut unsigned int
    voilà j'ai corrigé , il faut declarer par unsigned int au lieu de int
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	unsigned    int nbLignes1=0, nbLignes2=0,nbLignes3=0, nbLignes4=0;

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

Discussions similaires

  1. Erreurs de segmentation !
    Par anti-conformiste dans le forum Applications et environnements graphiques
    Réponses: 16
    Dernier message: 18/10/2005, 11h11
  2. Erreur de segmentation
    Par Trunks dans le forum C
    Réponses: 3
    Dernier message: 06/10/2005, 18h28
  3. Erreur de segmentation (Inconnue)
    Par Dark-Meteor dans le forum C
    Réponses: 5
    Dernier message: 08/09/2005, 13h42
  4. [Dev-C++] Erreur de segmentation...
    Par sas dans le forum Dev-C++
    Réponses: 11
    Dernier message: 26/03/2005, 14h25
  5. erreur de segmentation
    Par transistor49 dans le forum C++
    Réponses: 10
    Dernier message: 15/03/2005, 11h18

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