我一直在研究这段代码并不断遇到分段错误。我几乎肯定它来自我在OBJ_T类型中初始化我的功能点的方式。这就是我所拥有的:
typedef struct obj
{
COLOR_T color;
int (*intersect)(RAY_T ray, struct obj, VP_T *int_pt, VP_T *normal, double *t);
union geom
{
SPHERE_T sphere;
PLANE_T plane;
}geom;
} OBJ_T;
这是我得到seg错误的一行:
if((*(objs[i].intersect))(ray, objs[i], &int_pt, &normal, &t) == 1)
答案 0 :(得分:0)
if((*(objs [i] .intersect))(ray,objs [i],& int_pt,& normal,& t)== 1)
当您获得分段错误时,不会为该指针分配内存。
要解决这个问题,首先必须为结构成员分配内存。
int(* intersect)(RAY_T ray,struct obj,VP_T * int_pt,VP_T * normal,double t);