我在C:中有这样的东西
unsigned char a = structTypeInstance->b ;
其中CCD_ 1具有与CCD_ 2相同的类型。
在此基础上,我收到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. */