SIGSEGV访问C中的结构成员

时间:2012-09-13 13:28:46

标签: c segmentation-fault variable-assignment sigsegv

我在C中有类似的东西:

unsigned char a = structTypeInstance->b ;

其中ba的类型相同。

此时我收到SIGSEGV

为什么?

编辑:我可以访问之前声明的structTypeInstance字段。我唯一的预感是,为structTypeInstance分配内存,这还不够。这可能吗?

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。但是既然你拒绝向我们展示声明structTypeInstance的代码,相应结构的定义是完整的,它被分配到哪里,我们无法确定。

有时候这个bug就像编写

一样简单
struct FOOBAR {
   char big[16380];
   char b[4];
};
struct FOOBAR *foo;

foo = malloc (sizeof foo); /* Allocates just a handful of bytes. */

当你真正意味着

foo = malloc (sizeof *foo); /* Allocates enough for a complete struct FOOBAR. */