我有一个相当简单的问题;我有包含指向对象的指针的数组。我有时会从这些数组创建变异数组,并且只在一个方法中使用它们。后来我就不需要了。在这种情况下,我不希望在继续使用原始数组时破坏指向的数据。我不完全理解的是在我的临时数组中创建的指针(不是数据本身,而是指针)会发生什么?内存如何处理它们。据我所知,指针只能指向一个地址。你不能“删除”它们。
谁能给我更多的见解?一直以来,我都觉得我的记忆力有问题。
在这种情况下,列表是我的“包”,它是数组实现的对象包装器。但是,由于它包含索引之间的间隙,我使用 getGapless 来获取一个不包含 nullptr 索引的包。
我最后删除了我的包,但它并没有删除实际的内容(这是用不同的方法完成的)。
那么我的“玩家”包中的那些指针什么时候超出范围?
virtual void processEntities(artemis::ImmutableBag<artemis::Entity*>& bag)
{
artemis::Bag<artemis::Entity*> * list = (artemis::Bag<artemis::Entity*>*)this->world->getGroupManager()->getEntities("HUMAN");
if(list == nullptr) return;//Kill function
artemis::Bag<artemis::Entity*> * players = list->getGapless();
for(int i=0; i<players->getCount(); i++)
{
for(int j=i+1; j < players->getCount(); j++)
{
if(intersects(*players->get(i),*players->get(j))){
std::cout << "Collide YEAH \n";
}
}
}
delete players;
}