我在C中有类似的东西:
unsigned char a = structTypeInstance->b ;
其中b
与a
的类型相同。
此时我收到SIGSEGV
。
为什么?
编辑:我可以访问之前声明的structTypeInstance字段。我唯一的预感是,为structTypeInstance分配内存,这还不够。这可能吗?
答案 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. */