C++ 如何取消分配指向指向堆中指向其他对象的指针类型的指针?

C++ 如何取消分配指向指向堆中指向其他对象的指针类型的指针?,c++,C++,所以我决定今晚玩一玩:) 您可以看到,我现在动态分配了指针类型 这些指针将分别指向堆中的另一个(单个)对象。(稍后,不在代码示例中) 所以我一直在想,是否应该先删除指针指向指针类型所指向的所有对象类型的指针,然后再删除指针指向指针类型的指针 还是有更好的办法 编辑:不使用智能指针…正如建议的那样,更好的方法是使用智能指针容器 但是,由于您不能使用智能指针(我不知道为什么,因为所有智能指针都是一个非常简单的类,所以您可以编写自己的类),因此需要循环遍历数组并delete每个指针,然后delete[

所以我决定今晚玩一玩:)

您可以看到,我现在动态分配了指针类型

这些指针将分别指向堆中的另一个(单个)对象。(稍后,不在代码示例中)

所以我一直在想,是否应该先删除指针指向指针类型所指向的所有对象类型的指针,然后再删除指针指向指针类型的指针

还是有更好的办法


编辑:不使用智能指针…

正如建议的那样,更好的方法是使用智能指针容器


但是,由于您不能使用智能指针(我不知道为什么,因为所有智能指针都是一个非常简单的类,所以您可以编写自己的类),因此需要循环遍历数组并
delete
每个指针,然后
delete[]
按该顺序删除数组。这正是管理自己的内存时必须做的。

是的,有更好的方法。就像使用智能指针向量。如果不使用智能指针…当你说静态分配到堆上是什么意思?@Mooing Duck只是指定它不是动态分配的allocated@xcrypt:Seth不同意我的观点,所以请确定:堆上的对象是静态分配的,而不是动态分配的吗声明类似于
CursorHitBox-hitbox[100]或类似
CursorHitBox*newbox=new CursorHitBox()或类似
CursorHitBox*newbox=new CursorHitBox[100]?好的,谢谢。我真的不喜欢使用智能指针,因为我喜欢看发生了什么。我可能会在稍后使用它们,当我有经验时。@ XLIPT我也是一样,我几乎总是在使用C++标准库版本之前编写自己的类版本。这是C++,知道发生了什么是很好的。OP阐明了指向对象并不是动态分配的,在这种情况下,你不应该在每个指针上调用<代码>删除>代码>,对吧?只是
delete[]
数组。@mooding这是一种条件修正,他说“这些指针将指向堆中的另一个(静态分配的)对象。”然而,我认为,他只是误解了“静态分配”的含义,“堆中的对象”是准确的,意味着这些对象是动态分配的。
CursorHBList::CursorHBList(UINT iNumHB)
    :m_ppCursorHB(nullptr)
    ,m_iNumHB(iNumHB)
{
    if (iNumHB != 0) {
        m_ppCursorHB = new CursorHitBox* [iNumHB];
    }   
}