的複製成員我有一個結構
typedef struct Node{
Particle p;
Box box;
struct Node *son[4];
}Node
和
typedef struct Box{
double low[3];
double up[3];
}Box
給出一個結構Node
和Box
我有兩個功能insert()
和sonumb()
,我想用這些結構。
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()
返回一個整數值b
。 sonbox
的sonumb()
小盒子裏面t->box
通話後表示。通話結束後,我會返回sonbox
的正確值。所以sonbox
不是空的。但是,如果我想複製像t->son[b]->box = sonbox
那樣的值,則會出現分段錯誤。我錯過了什麼?
'sonbox'不是空的兩種方式。對於段錯誤的可能原因是'b < 0 || b > 3'或'T->子並[b]'被初始化。 – StoryTeller
對不起,但請回到[幫助]並再次閱讀如何問「代碼無法正常工作」的問題。它從提供[mcve]開始。你有一個代碼錯誤;但你只是顯示你的代碼的一部分。 – GhostCat
'son'是結構體指針數組,你需要在''malloc''前分配內存,然後給每個元素賦予框 –