2

structのプログラムでは、次のように定義されています。

    struct memregion {
      void * from;
      void * to;
      intモード;
    }

私は自分のプログラムで、この構造体の配列をとして宣言しstruct memregion regions[10]ます。次に、それを関数に渡しますget_mem_layout(regions, 10)。その宣言は次のとおりです。

    void get_mem_layout(struct memregion * region、int size)

ただし、構造体の任意のメンバー変数にデータを書き込もうとすると、

    region [j] .mode = 1;

また

    void * addr;
    addr =(void *)0;
    リージョン[j].from= addr;

セグメンテーション違反が発生しました。なぜこれが起こっているのか判断できません。助けてください。

更新:割り当ての一部であったため、完全なコードが削除されました。@paddyの回答で問題は解決しました。

4

1 に答える 1

3

なぜ誰もこれを取り上げなかったのですか?または、何か不足していますか?

get_mem_layoutあなたが最初にしたことの1つはこれです:

regions = 0;

次にregions、配列としてアクセスします...

もしかして:

num_regions = 0;
于 2012-09-18T02:17:14.073 に答える