的复制成员我有一个结构
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''前分配内存,然后给每个元素赋予框 –