ここに奇妙なことがあります:
同じ型の構造体へのポインターと、他の型の構造体へのポインター、および他の値を含む構造体があります。
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 を使用しています。