:STDに格納されているオブジェクトを削除::だけで簡単に小さな質問ベクトル
#define SAFE_DELETE(p) if((p)) { delete(p); (p) =NULL; }
#define SAFE_DELETE_A(pa) if((pa)) { delete[](pa); (pa)=NULL; }
// Add objects to our vector
for(int a = 0; a< 150; a++)
{
CObject *pNewObject = new CObjectPlane(...)
m_vpObjects.push_back(pNewObject);
}
// Delete all objects stored in our vector
std::vector<CObject*>::iterator itObject;
for(itObject = m_vpObjects.begin(); itObject!=m_vpObjects.end();)
{
SAFE_DELETE((*itObject));
itObject = m_vpObjects.erase(itObject);
}
m_vpObjects.clear();
1)は、そのSTDに格納されたオブジェクトを削除します::ベクトル(CObjectの*)
2)に、それは安全ですこの方法でそれらを削除しますか?
あなたのSAFE_DELETE()はばかばかしいです。 C++は、NULLポインタの削除がnoopであることを保証するので、最初にチェックする必要はありません。 – FatalError
また、これらの#defineは良い考えではないと思います。それらはいくつかの副作用を引き起こす可能性があります。いくつかの種類のスマートポインタの代わりにrawポインタを使用する必要がありますか? –