Bonsoir,

toujours par rapport à l'allocation dynamique de tableaux, j'ai un core dumped que je n'arrive pas à m'expliquer.

Peut-être aurez vous un meilleur oeil que le mien

Tout d'abord voici donc mes deux structures de taf

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
typedef struct frequence_element{
 int element;
 int frequence;
 
}frequence_element;
 
typedef struct tabFrequence
{
	int size;
	frequence_element* tab;
}tabFrequence;
J'ai commencé par faire une fonction me permettant de récupérer le frequence_element max d'un tabFrequence

Le problème ne me semble pas venir d'ici étant donné que je récupère bien la bonne donnée, mais je préfère la mettre au xas où.
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
frequence_element recupMax(tabFrequence myTab){
	int taille=myTab.size;
	frequence_element max;
	max.element=-1;
	max.frequence=-1;
	for(int k=0;k<taille;k++){
		if(max.frequence < myTab.tab[k].frequence){
			max=myTab.tab[k];
		}else{
			if(max.frequence == myTab.tab[k].frequence){
				if(max.element > myTab.tab[k].element){
					max=myTab.tab[k];
				}
			}
		}
	}
	return max;
 
}
Et la fonction en cause de l'erreur de segmentation.

En rouge, j'ai repéré la ligne provoquant l'erreur


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
//Supprime l'élément de fréquence max le plus petit
tabFrequence deleteMax(tabFrequence myTab,frequence_element el){
	tabFrequence myTab2;
	myTab2.size=myTab.size-1;
	int knew=0;
	for(int k=0;k<myTab.size;k++){
		printf("%d\n",k);
		if((myTab.tab[k].element != el.element)&&(myTab.tab[k].frequence != el.frequence)){
			//si pas le max
			printf("el %d freq %d\n",myTab.tab[k].element,myTab.tab[k].frequence);//trace qui vérifie que l'élément inséré est correct OK
			myTab2.tab[knew]=myTab.tab[k];
			knew++;
			printf("test\n");//ne s'affiche pas car core dumped avant
		}
	}
	return myTab2;
}
Le but de cette fonction est donc de retourner le tableau de tabFrequence privé de son frequence_element maximum el


Dans mon exemple j'ai un tab de frequence tel que

size=2
myTab.tab[0].element=2
myTab.tab[0].frequence=2
myTab.tab[1].element=1
myTab.tab[1].frequence=1

avec el.element=2 et el.frequence=2

Mon premier tour de boucle k=0 ignore bien le if.
L'erreur se produit sur le k=1 au moment de l'insertion.

Merci pour votre aide !