1

ここに奇妙なことがあります:

同じ型の構造体へのポインターと、他の型の構造体へのポインター、および他の値を含む構造体があります。

struct animal {
    struct animal * father;
    struct race * rc;
    int age;
};

struct race {
    char colour;
};

父を介して値 age にアクセスすると、すべて問題ないようです。

animal->father->age

しかし、父親の人種の色にアクセスしようとすると:

animal->father->rc->colour

「セグメンテーション違反」が発生します。しかし、それが毎回起こるとしたら、それは簡単すぎるでしょう。動作する場合と動作しない場合があり、何が不安定な要因なのかわかりません。常に機能するもう1つのことは次のとおりです。

animal->rc->colour

最大 2 つのポインターを結合できる場合、問題が発生する可能性はありますか? 最新の gcc を使用しています。

4

1 に答える 1

0

正常に動作するときとそうでないときがある場合、メモリの割り当てに問題があることはほぼ確実です。宣言からすぐに値を割り当てた方法を投稿できれば、すぐにここで助けを得ることができるはずです。

于 2013-03-02T10:38:54.957 に答える