Ich habe eine Struktur Node
und Box
gegeben durchKopieren Mitglieder einer Struktur
typedef struct Node{
Particle p;
Box box;
struct Node *son[4];
}Node
und
typedef struct Box{
double low[3];
double up[3];
}Box
Ich habe zwei Funktionen insert()
und sonumb()
, wo ich diese Strukturen verwenden möchten.
void insert(Particle *p, Node *t){
Box sonbox;
int b=sonumb(&t->box, &sonbox, p);
t->son[b]->box = sonbox; // <--- Produces Segmentation fault (core dumped)
}
int sonumb(Box *box, Box *sonbox, Particle *p){
int b=0;
for(int d=0;d<3;d++){
sonbox->up[d] = 0.5*box->up[d];
sonbox->low[d] = 0.5*box->low[d];
}
b=1; // b=[0,3] just for this example
}
sonum()
gibt einen ganzzahligen Wert b
. sonbox
stellt nach dem Anruf sonumb()
eine kleinere Box innerhalb von t->box
dar. Ich gebe die richtigen Werte für sonbox
nach dem Anruf zurück. Also sonbox
ist nicht leer. Aber wenn ich diese Werte wie t->son[b]->box = sonbox
kopieren möchte, bekomme ich einen Segmentationsfehler. Was habe ich verpasst?
'sonbox' ist nicht so oder so leer. Mögliche Ursachen für einen segfault sind 'b < 0 || b > 3' oder' t-> son [b] 'sind nicht initialisiert. – StoryTeller
Entschuldigung, aber wenden Sie sich bitte wieder an die [Hilfe] und lesen Sie noch einmal, wie Sie "code not working" -Fragen stellen können. Es beginnt mit der Bereitstellung eines [mcve]. Sie haben einen Code-Fehler; aber Sie zeigen nur Teile Ihres Codes. – GhostCat
Der 'Sohn' ist struct Zeigerarray und Sie müssen Speicher mit' malloc' reservieren, bevor Sie jedem Element –