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 :

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
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.