正确删除指针Deque

时间:2013-12-09 18:39:33

标签: c++ pointers deque

我有一个简单的问题。我有一个双端队列,

std::deque<NPC*> enemyList 

包含动态分配的NPC对象。每个NPC对象还有一个指向动态分配的Path和Shape对象的指针句柄,可以通过NPC类的getShape()访问它并获取Path()访问器。

这就是我目前在这种情况下释放内存的方式:

while (enemyList.size() != 0) //delete npc's
{
    Shape3D *sPtr = enemyList.back()->getShape(); 
    Path *pPtr = enemyList.back()->getPath();
    NPC *npcPtr = enemyList.back();

    enemyList.pop_back();

    delete sPtr;
    delete pPtr;
    delete npcPtr;
}

此代码编译并且似乎工作正常,但我不确定它是否在技术上正确。 这是正确的,如果不是,那么实现预期效果的更好方法是什么?

谢谢你!

1 个答案:

答案 0 :(得分:2)

这应该可以正常工作 - 只要没有抛出异常。你真正想要使用的是smart pointers的双端队列,当它们超出范围时会自行删除。

或者更好的是,pointer-container,每次提升。