Bonjour, je résoud une équation où mon inconnue est un vecteur à 26 composantes. A chaque itération, j'écrivais sur le disque dur toutes les composantes de mon vecteur. Maintenant, j'ai fait un petit "module" qui permet de n'écrire que quelques composantes de mon vecteur sur le disque dur (les numéros de ces composantes étant choisies par l'utilisateur). Depuis que j'ai fait ce module, j'ai un segmentation fault à la fin de mon prgm (bien que toutes mes données aient été écrites sur le disque dur) ! Si je fais
tout se passe bien, aucune erreur. Si je fais
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 ici il y a le code /* destruction de la mémoire */ DestroyVector( eprinted); DestroyMechanism(&mec); DestroyEngine(&e); DestroyTemporary(&temp); DestroyVector(&esp_EGR); DestroyVector(&comp_EGR); DestroyIniData(&id); DestroyRandIniCond(&ric); DestroyIniMass(&inimass); printf("toto\n"); DestroyDistribution(&d); printf("toto\n"); free(inputfile); inputfile=NULL;
ma sortie est
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 ici il y a le code /* destruction de la mémoire */ DestroyMechanism(&mec); DestroyEngine(&e); DestroyTemporary(&temp); DestroyVector(&esp_EGR); DestroyVector(&comp_EGR); DestroyIniData(&id); DestroyRandIniCond(&ric); DestroyIniMass(&inimass); printf("toto\n"); DestroyDistribution(&d); printf("toto\n"); free(inputfile); inputfile=NULL; DestroyVector( eprinted);
et si je faistoto
Erreur de segmentation
ma sortie est
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 ici il y a le code /* destruction de la mémoire */ DestroyMechanism(&mec); DestroyEngine(&e); DestroyTemporary(&temp); DestroyVector(&esp_EGR); DestroyVector(&comp_EGR); DestroyIniData(&id); DestroyRandIniCond(&ric); DestroyIniMass(&inimass); DestroyVector( eprinted); printf("toto\n"); DestroyDistribution(&d); printf("toto\n"); free(inputfile); inputfile=NULL;
et là où je suis trop énervé, c'est que ma version multi-thread marche très bien. En revanche, ma version séquentielle plante ! D'où pourrait provenir l'erreur ?toto
*** glibc detected *** double free or corruption (fasttop): 0x000000000059d800 ***
Abandon
Partager