0
点赞
收藏
分享

微信扫一扫

注意!!一定要谨慎使用c/c++原生指针


主要是顶层逻辑中引用了一个指针,而在业务逻辑中将此指针删除了。这种在代码量很少的情况下,很容易被发现,但是代码量多了,逻辑多了的时候,想一下子定位到问题所在,就没那么容易了。

结论:能用智能指针,就避免直接使用原生指针;删除指针时,要极其的小心,多想想是否有其它地方在引用着。随意的delete,会在你稍不注意的时候,就引入bug,而且极其难定位问题所在。

 

以下是顶层逻辑,在业务逻辑中,会删除m_World.GetEntityArray中的对象,导致内存访问违规!!!


//逻辑函数
BattleWorld::EntityArray mEntitys = m_World.GetEntityArray();
for ( auto it = mEntitys.begin(); it != mEntitys.end(); ++it )
{
if ( *it )
{
AiObject* pAi= (*it)->GetAi();
if ( pAi )
{
pAi->Run();
}
}
}


 

举报

相关推荐

“学建模“一定要注意这几点

0 条评论