2012-05-29 34 views
2

請問delete荷蘭國際集團的指針結構foo刪除和指向數據的節點?

struct foo 
{ 
    bar * baz; 
}; 

指着結構baz

struct baz 
{ 
    int arr; 
}; 

而且delete /釋放內存通過baz指向?

+1

除了析構函數之外,還應遵循三/五規則並實現複製/移動構造函數和賦值運算符。 – chris

+0

還沒有了解複製構造函數。它適用於DS課程,所以我們不會太過於熟悉語言本身。 – Flexo1515

+1

如果確實如此,那將是一場災難。如果其他東西是*使用struct'baz'? –

回答

4

編號刪除不以這種方式「級聯」。

但是,如果你有一個析構函數foo,那麼你可以在該析構函數中使用delete baz

3

不需要在刪除foo的實例之前,您需要手動刪除baz。大多數典型的開發人員將擁有foo delete baz的析構函數。

struct foo 
{ 
    bar * baz; 
    ~foo() 
    { 
     delete baz; 
    } 
}; 
+2

或更好的是,如果'baz'在構造函數中創建並在析構函數中被刪除,它可能不應該單獨分配。 (否則,請使用智能指針。) –

+0

K,謝謝。我有幾張表指向相同的數據,所以我想確保解構一張表不會影響實際數據。 – Flexo1515