Bonjour
Voici ma structure :
J'ai une fonction où je fais les allocations de mes structures :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 struct part { double x, y, z ; double vx, vy, vz ; double frcx, frcy, frcz ; double dx, dy, dz ; int nbrevoisin ; double Eint, Tint ; int *listevoisin ; } ; typedef struct part Particules ;
Le problème c'est que j'ai un segmentation fault. J'ai exécuté avec gdb et ça me donne ça :
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 int allocation( int Natom, Data *Donnees, Particules *Particule[] ) { .... // structure particule *Particule = calloc( Natom, sizeof(Particules) ) ; for ( iat = 0 ; iat < Natom ; iat++ ) { p = Particule[iat] ; p->listevoisin = calloc( Donnees->nbrevoisinmax, sizeof(int) ) ; } .... }
J'ai essayé avec malloc au lieu de calloc. Et j'ai essayé aussi avec ça comme déclaration mais ça ne change rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Program received signal SIGSEGV, Segmentation fault. allocation (Natom=1000, Donnees=0xbfffed6c, Particule=0xbfffed68) at allocation.c:24 24 p->listevoisin = calloc( Donnees->nbrevoisinmax, sizeof(int) ) ;
Merci pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 *Particule = calloc( Natom, sizeof(Particules) + Donnees->nbrevoisinmax * sizeof(int) ) ; for ( iat = 0 ; iat < Natom ; iat++ ) { p = Particule[iat] ; p->listevoisin = malloc( Donnees->nbrevoisinmax, sizeof(int) ) ; }
Partager