-3
在下面的代碼中,assert語句正在工作(變爲false)。但是沒有任何並行線程訪問數組。實際上根本沒有任何並行代碼。當我在該函數的開始處攜帶該行(在Visual Studio中)時,它可以正常工作。什麼可能導致問題?我看不出任何理由。std ::向量超出範圍
void CheckProjectileMeteorCollision()
{
int i = ((int)m_meteorManager.m_meteors.size() - 1);
for (i; i > -1; i--)
{
int j = ((int)m_projectileManager.m_projectiles.size() - 1);
for (j; j > -1; j--)
{
assert(i != m_meteorManager.m_meteors.size());
if (SpherePointIntersection(
m_meteorManager.m_meteors[i]->m_node->m_translation,
m_meteorManager.m_meteors[i]->m_collisionRadius,
m_projectileManager.m_projectiles[j]->m_node->m_translation))
{
SafeDel(m_projectileManager.m_projectiles[j]);
m_projectileManager.m_projectiles.erase(m_projectileManager.m_projectiles.begin() + j);
SafeDel(m_meteorManager.m_meteors[i]);
m_meteorManager.m_meteors.erase(m_meteorManager.m_meteors.begin() + i);
}
}
}
}
您是否嘗試編寫一個最小的完整示例?別人可以編譯和運行的東西? – Jens
'SafeDel'在這裏可能不太安全。 – LogicStuff
不幸的是,我刪除了「SafeDel」行。仍然存在問題。如果這段代碼不包含任何對我來說合適的邏輯問題。問題在於其他地方。 – Cihan