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 :

segmentation fault "knapsack"


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5
    Par défaut segmentation fault "knapsack"
    Bonjour,

    Je suis entrain de programmer le problème de sac à dos (knapsack) en C. au dela du problème algorithmique. Je compile mon pragramme qui ne m'afiche aucune erreur, par contre au moment de l'execution avec un fichier, une fois je depasse 11 elements je recois un message de segmentation fault. J'ai essayé de debugger mais je n'arrive pas à savoir en quel endroit ca coince.

    Je vous remercie infiniment de m'aider à localiser le probleme (juste ou ca coince au niveau d'allocation memoire, tableau,..)

    voici le programme + le fichier

    je compile sous cette forme (parce que je veux pas voir les warnning dans un premier temps)

    gcc -o horowitz horowitz.c

    execution: ./horowitz fichier.txt

    Merci bcp
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé Avatar de ccensam
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Par défaut
    Vous avez dit sans erreur!!!! Ca se compile!!!!
    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
    Compiling: C:\Documents and Settings\Oussama\Bureau\test.c
    C:\Documents and Settings\Oussama\Bureau\test.c:11:23: sys/times.h: No such file or directory
    C:\Documents and Settings\Oussama\Bureau\test.c: In function `void* palloc(long int, long int)':
    C:\Documents and Settings\Oussama\Bureau\test.c:135: error: invalid conversion from `void*' to `long int*'
    C:\Documents and Settings\Oussama\Bureau\test.c: In function `void wadd(allinfo*, item*)':
    C:\Documents and Settings\Oussama\Bureau\test.c:153: error: invalid conversion from `void*' to `state*'
    C:\Documents and Settings\Oussama\Bureau\test.c: In function `void wsub(allinfo*, item*)':
    C:\Documents and Settings\Oussama\Bureau\test.c:193: error: invalid conversion from `void*' to `state*'
    C:\Documents and Settings\Oussama\Bureau\test.c: In function `void findbreak(allinfo*)':
    C:\Documents and Settings\Oussama\Bureau\test.c:310: error: invalid conversion from `void*' to `state*'
    C:\Documents and Settings\Oussama\Bureau\test.c:314: error: invalid conversion from `void*' to `state*'
    C:\Documents and Settings\Oussama\Bureau\test.c: In function `int main(int, char**)':
    C:\Documents and Settings\Oussama\Bureau\test.c:407: error: aggregate `timezone tz' has incomplete type and cannot be defined
    C:\Documents and Settings\Oussama\Bureau\test.c:419: error: `gettimeofday' undeclared (first use this function)
    C:\Documents and Settings\Oussama\Bureau\test.c:419: error: (Each undeclared identifier is reported only once for each function it appears in.)
    C:\Documents and Settings\Oussama\Bureau\test.c:427:2: warning: no newline at end of file
    Process terminated with status 1 (0 minutes, 0 seconds)
    9 errors, 1 warnings
    Corrige ces erreurs et on vera, il y a trop à dire sur votre code!!!

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5
    Par défaut segmentation fault "knapsack"
    Bonjour,

    Je ne suis pas doue en c mais etant donne que je travaille sous linux j'ai vu que "sys/time.h" existe bien dans les include. (peut etre pas pour vous qui travaille sous windows). Si "sys/time.h" n'existe pas elle genere effectivement l'erreur qui vous a ete affichee+ toutes les erreurs du time: gettimeofday...

    avec le compilateur que j'utilise (peut etre bcp plus tolerent) je ne recois aucune erreur. Mon programme marche bien pour des fichiers contenant 10 elements mais à partir de 11 elements je recois une segmentation fault.



    Citation Envoyé par ccensam
    Vous avez dit sans erreur!!!! Ca se compile!!!!
    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
    Compiling: C:\Documents and Settings\Oussama\Bureau\test.c
    C:\Documents and Settings\Oussama\Bureau\test.c:11:23: sys/times.h: No such file or directory
    C:\Documents and Settings\Oussama\Bureau\test.c: In function `void* palloc(long int, long int)':
    C:\Documents and Settings\Oussama\Bureau\test.c:135: error: invalid conversion from `void*' to `long int*'
    C:\Documents and Settings\Oussama\Bureau\test.c: In function `void wadd(allinfo*, item*)':
    C:\Documents and Settings\Oussama\Bureau\test.c:153: error: invalid conversion from `void*' to `state*'
    C:\Documents and Settings\Oussama\Bureau\test.c: In function `void wsub(allinfo*, item*)':
    C:\Documents and Settings\Oussama\Bureau\test.c:193: error: invalid conversion from `void*' to `state*'
    C:\Documents and Settings\Oussama\Bureau\test.c: In function `void findbreak(allinfo*)':
    C:\Documents and Settings\Oussama\Bureau\test.c:310: error: invalid conversion from `void*' to `state*'
    C:\Documents and Settings\Oussama\Bureau\test.c:314: error: invalid conversion from `void*' to `state*'
    C:\Documents and Settings\Oussama\Bureau\test.c: In function `int main(int, char**)':
    C:\Documents and Settings\Oussama\Bureau\test.c:407: error: aggregate `timezone tz' has incomplete type and cannot be defined
    C:\Documents and Settings\Oussama\Bureau\test.c:419: error: `gettimeofday' undeclared (first use this function)
    C:\Documents and Settings\Oussama\Bureau\test.c:419: error: (Each undeclared identifier is reported only once for each function it appears in.)
    C:\Documents and Settings\Oussama\Bureau\test.c:427:2: warning: no newline at end of file
    Process terminated with status 1 (0 minutes, 0 seconds)
    9 errors, 1 warnings
    Corrige ces erreurs et on vera, il y a trop à dire sur votre code!!!

  4. #4
    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
    Je n'ai pas l'impression que la fonction "lecture_fichier()" respect le format du fichier d'entrée ou que le fichier d'entrée ne soit compatible au format attendu.

  5. #5
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Ouais enfin dire, je compile comme ça parce que je veux pas de warning ben voila quoi.

    Le minimum est pour moi
    gcc -Wall fichier.c -o fichier

    Un warning est une erreur, c'est tout.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5
    Par défaut segmentation foult et SIGSEGV
    Bonjour,

    Voici le programme qui se compile sans warning:

    Merci de m'aider à trouver mon erreur segmentation fault. Normalement au moment du debogage je recois le signal SIGSEGV ce qui prouve qu'il ya une "violation de memoire" mais je n'arrive pas à localiser ou ca marche pas




    Citation Envoyé par Skyrunner
    Ouais enfin dire, je compile comme ça parce que je veux pas de warning ben voila quoi.

    Le minimum est pour moi
    gcc -Wall fichier.c -o fichier

    Un warning est une erreur, c'est tout.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 13
    Dernier message: 13/07/2004, 15h41
  2. Comment contrer la "segmentation fault" ?
    Par guillaume_pfr dans le forum C
    Réponses: 15
    Dernier message: 08/08/2003, 13h43

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