我在C中有这样的东西:
unsigned char a = structTypeInstance->b ;
whereb
具有与 相同的类型a
。
在此我收到SIGSEGV
。
为什么?
编辑:我可以访问之前声明的 structTypeInstance 字段。我唯一的预感是,在为 structTypeInstance 分配内存的地方,是不够的。那可能吗?
我在C中有这样的东西:
unsigned char a = structTypeInstance->b ;
whereb
具有与 相同的类型a
。
在此我收到SIGSEGV
。
为什么?
编辑:我可以访问之前声明的 structTypeInstance 字段。我唯一的预感是,在为 structTypeInstance 分配内存的地方,是不够的。那可能吗?
是的,这是可能的。但是由于您拒绝向我们展示structTypeInstance
声明的代码,相应结构的完整定义是什么,分配到哪里,我们无法确定。
有时错误就像写一样简单
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. */