Bonjour,
je me tire les cheveux depuis plusieurs jours sur mon code car j'ai lors de son exécution:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Erreur de segmentation (core dumped)
Ça arrive uniquement quand la valeur d'un paramètre (nDemes) est strictement supérieur à 2.

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):
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
	}
}
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.
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:
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 126
mais au dessus de 2, non:
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
Je ne comprends vraiment rien.

Est-ce que vous avez une idée là dessus par hasard ?

Merci beaucoup en tout cas !

M.