Bonjour,
je me tire les cheveux depuis plusieurs jours sur mon code car j'ai lors de son exécution:Ça arrive uniquement quand la valeur d'un paramètre (nDemes) est strictement supérieur à 2.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Erreur de segmentation (core dumped)
En mettant des "printf" un peu partout dans le code (via une fonction nommée "void afficherPopulation()") je remarque un truc très bizarre.
Mon main a la structure suivante (en gros):
Donc, à la fin du premier passage de boucle, j'ai bien un objet "population" car tout s'affiche normalement pour i=0, mais dès le début du second passage, il ne s'affiche plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 int main(int argc, char* argv[]){ int i = 0; for(i=0; i<x; i++){ afficherPopulation(population, ... ); // ça marche pour i=0 mais pas pour i=1 differents traitements générant newPopulation à partir de population; copié collé de "newPopulation" dans "population" afficherPopulation(population, ... ); // ça marche pour i=0 } }
Population c'est un tableau de "deme" (une structure créée avant le main()) et de longueur nDemes. Si nDemes est égale à 1 ou 2 (premier argument), ça marche:mais au dessus de 2, non:
Code : Sélectionner tout - Visualiser dans une fenêtre à part ./a.out 2 5 10 5 0.0001 2 0.0001 2 0.2 0.1 1 126Je ne comprends vraiment rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ./a.out 3 5 10 5 0.0001 2 0.0001 2 0.2 0.1 1 126
Est-ce que vous avez une idée là dessus par hasard ?
Merci beaucoup en tout cas !
M.
Partager