-1

私のコードは次のとおりです

    struct packetheader
    {
       __u16 fcf;
       __u8 seq;
       __u8 dest[16];
       __u8 src[16];
      #if defined dis   
       __u32 dispatch;
      #endif
    }
    struct packetheader* uncompressed()
    {
       struct packetheader *pkhdr;
       pkhdr->dispatch=0x00000000;//segmentation fault
       return pkhdr;
     }

__u32 タイプのディスパッチに値を割り当てようとすると、セグメンテーション違反が発生する

4

1 に答える 1

0

問題は、pkhdr が初期化されていないことです。pkhdr はポインタであるため、デフォルトでは何も指していません。オブジェクトを統計的に割り当ててそのアドレスを pkhdr に割り当てるか、オブジェクトを動的に割り当てて pkhdr に割り当てる必要があります。

例:

struct packetheader *pkhdr = malloc(sizeof(struct packetheader));
于 2012-09-29T03:51:52.690 に答える