2013-01-08 47 views
1

這裏是一個奇怪的事情:Çstruct-> struct-> struct->元件(通常)段故障

我有一個結構,它包含指向相同類型的結構和指針其他類型的結構,以及其他一些值。

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

struct race { 
    char colour; 
}; 

一切似乎是確定,當我通過父親訪問值年齡:

animal->father->age 

但是,當我嘗試訪問父親的種族色彩:

animal->father->rc->colour 

我得到「分段故障」。但如果它每次都會變得很容易,那就太容易了。它有時會,有時不起作用,我不知道造成它不穩定的因素是什麼。另一件始終有效的工作是:

animal->rc->colour 

是否有可能您最多可以加入兩個指針,然後可能會出現問題? 我使用最新的gcc。

+9

你可能沒有正確地爲'animal-> father-> rc'分配內存,但是如果沒有看到實際的代碼就不可能分辨出來。 –

+4

您很可能忘記爲結構分配內存,或者您沒有初始化指向結構的指針。 –

+1

你確定'animal-> father-> rc'不是null嗎?無論如何......一般的建議是用'valgrind'分析它,然後用'gdb'運行它並觀察發生了什麼 –

回答

0

如果它有時可以正常工作,而且在其他時間沒有問題,那麼問題幾乎肯定與內存分配有關。如果你可以發佈你如何從聲明中分配值,你應該能夠儘快得到幫助。