0

我在C中有这样的东西:

unsigned char a = structTypeInstance->b ;

whereb具有与 相同的类型a

在此我收到SIGSEGV

为什么?

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

4

1 回答 1

0

是的,这是可能的。但是由于您拒绝向我们展示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. */
于 2012-09-13T14:05:19.830 回答