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 に答える