2011-09-12 298 views
0

所以我決定有一些有趣的指針今晚:)如何釋放指向堆中指向堆中其他對象的指針類型的指針指針類型?

CursorHBList::CursorHBList(UINT iNumHB) 
    :m_ppCursorHB(nullptr) 
    ,m_iNumHB(iNumHB) 
{ 
    if (iNumHB != 0) { 
     m_ppCursorHB = new CursorHitBox* [iNumHB]; 
    } 
} 

所以你可以看到,現在我已經動態分配的指針類型。

這些指針將每個指向堆中的另一個(單個)對象。 (稍後,不在代碼示例中)

所以我一直在想,如果我應該刪除指針指向的指針類型指向的所有指針對象類型,然後刪除[]指針指針類型?

或者還有更好的方法嗎?

編輯:不使用智能指針...

+0

是的,還有更好的方法。就像使用智能指針的矢量一樣。 – AJG85

+0

不使用智能指針... – xcrypt

+0

當你說靜態分配在堆上時,你是什麼意思? –

回答

2

作爲建議,更好的辦法是使用智能指針的容器。因爲你不能使用智能指針(我不知道爲什麼,因爲所有的智能指針是一個非常簡單的類,你可以編寫自己的指針),你需要循環訪問數組,然後在數組中循環訪問數組。 delete各個指針,然後按delete[]這個順序排列。這正是你管理自己的記憶時必須做的。

+1

好的,謝謝。我並不喜歡使用智能指針,因爲我喜歡看看發生了什麼。當我有經驗時,我可能會在稍後開始使用它們。 – xcrypt

+0

@xcrypt我也是這樣,在使用C++標準庫版本之前,我幾乎總是編寫自己的類的版本。這是C++,很清楚知道發生了什麼。 –

+0

該OP澄清指出的對象不是動態分配的,在這種情況下,您應該不會在每個指針上調用delete,對吧?只是'刪除[]'數組。 –