我有一个简单的问题。我有一个双端队列,
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;
}
此代码编译并且似乎工作正常,但我不确定它是否在技术上正确。 这是正确的,如果不是,那么实现预期效果的更好方法是什么?
谢谢你!答案 0 :(得分:2)
这应该可以正常工作 - 只要没有抛出异常。你真正想要使用的是smart pointers的双端队列,当它们超出范围时会自行删除。
或者更好的是,pointer-container,每次提升。