2011-09-12 257 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,对吧?只是'删除[]'数组。 –