簡體   English   中英

正確刪除指針的雙端隊列

[英]Properly deleting a Deque of Pointers

我有一個簡單的問題。 我有一個雙端隊列

std::deque<NPC*> enemyList 

其中包含動態分配的NPC對象。 每個NPC對象還具有指向動態分配的Path and Shape對象的指針句柄,可以通過NPC類的getShape()和get 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;
}

該代碼可以編譯,並且似乎可以正常工作,但是我不確定它在技術上是否正確。 這是否適當?如果不正確,哪種方法可以更好地達到預期效果?

謝謝!

只要沒有異常拋出,那應該可以正常工作。 您真正想要使用的是大量的智能指針 ,只要它們超出范圍,它們就會自動刪除。

或者更好的是,每次提升一個指針容器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM