正确删除一组指针
Properly deleting a Deque of Pointers
我有一个简单的问题。我有一个问题,
std::deque<NPC*> enemyList
其包含动态分配的NPC对象。每个NPC对象还有一个指向动态分配的Path和Shape对象的指针句柄,可以通过NPC类的getShape()和getPath()访问器访问该对象。
这就是我目前在这种情况下释放内存的方式:
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;
}
这段代码编译起来似乎很好,但我不确定它在技术上是否正确。这样做合适吗?如果不合适,还有什么更好的方法可以达到预期效果?
谢谢!
只要不抛出异常,这应该可以正常工作。你真正想要使用的是一组智能指针,每当它们超出范围时,它们就会删除自己。
或者更好的是,指针容器,每次提升。
相关文章:
- 在 c++ 中拥有一组结构的正确方法是什么?
- 有哪些有效的方法可以消除一组 100 万个字符串>重复数据?
- 程序以使用 C++ 中的 while 循环查找一组数字的最小值
- 添加到数组指针
- 一组值的零开销下标运算符
- C++语法差异:二维和一维数组(指针算术)
- 在删除之前更新一组元素指针中的元素
- 是否可以为CPP中的对象创建一组指针
- 在一组指针上迭代
- Visual Studio 2015:是一组允许的常量指针
- 正确删除一组指针
- 如何用自定义比较表示一组指针,但保持原始原始指针的重复比较
- 我应该使用 std::set 还是 std::unordered_set 作为一组指针
- 如何在C++中从一组对象指针打印
- c++指针从一组数组
- c++:在一组类指针上使用std::find
- 存储一组指针会导致未定义的行为吗
- C++保留了一组指向模板对象的指针,这些指针都派生自一个非模板类
- 访问一组指针
- 混合程序(asm+cpp):发送和接收一个数组指针