Hello tout le monde,
voilà, j'ai un bête problème de pointeur dans mon code qui m'amène à une erreur de type
*** glibc detected *** ./percolation: double free or corruption (!prev): 0x09525138 ***
Voici les bribes utiles de mon code :
	
	| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 
 | int *lat; //<- variable déclarée globalement
 
percolation::percolation(int seed, float proba, int N)
{
...
lat = new int[squareN]; //a l'initialisation de la classe, j'alloue la mémoire à ma variable
...
}
 
//A un moment, j'appelle la fonction suivante
int percolation::addToCluster(int i,int mainCluster,int * M,int k)
{
...
    lat[i] = lat[mainCluster]; //<- selon mes tests, c'est précisément à cause de cette ligne que l'erreur apparait.
 
    M[lat[i]]++;
 
    return k;
}
 
//naturellement, le destructeur de mon objet libère la mémoire
percolation::~percolation()
{
    delete [] lat;
} | 
 Concernant la ligne 
	
	lat[i] = lat[mainCluster];
 Si je la mets en commentaire, je n'ai pas l'erreur. Si je la remplace par quelque chose du style 
Je n'ai pas l'erreur.
J'appelle aussi la fonction addToCluster a un autre moment du code mais ca ne pose pas de bugg non plus...
Voila, ca fait un moment que je tourne en rond sur google, sans trouvé la solution à mon problème.
Si quelqu'un à une idée, je serais vraiment content.
Salutations.
						
					
Partager