我已經構建了一個自定義的數據結構,這就像一個雙向鏈接的RBTree,雖然邏輯看起來很好,但我沒有看到當我刪除一個節點時發佈任何內存。C++指針結構不會被刪除
這是我的節點聲明:
typedef struct rbtreere_node
{
public:
NMessage *n_message;
// Node Specific //
enum color color_ID; //<<--- Color for ID side of RBTreeRe
enum color color_Price; //<<--- Color for Price side of RBTreeRe
int id; //<<--- Unique Identifier.
rbtreere_node *left_ID, *right_ID, *parent_ID, *left_Price, *right_Price, *parent_Price;
}*node;
當我打電話給我的刪除功能,我結束我的回報之前delete n
。 我檢查,如果我嘗試返回之前訪問任何node n
的數據,它仍然存在...
即我打電話這樣的:
delete n;
std::cout << n->color_ID<<"\n\n";
,它並返回一個節點顏色
我應該爲它構建一個自定義的析構函數嗎?
我也有node message
作爲一個變種,而不是一個指針,但似乎沒有任何改變......
編輯:我的問題是,我沒有看到在內存使用任何下降後刪除任何或甚至所有節點。我應該如何處理它?
執行'delete n;'操作後,您可以強制指針指向'n = NULL;'...無法恢復數據。 –