注意!!一定要谨慎使用c/c++原生指针
2017-03-26 02:17
211 查看
使用指针,要非常小心,今天在做一个小游戏时,就碰到一个使用原生指针的问题,找了好几个小时,才定位到问题的所在,晕。
主要是顶层逻辑中引用了一个指针,而在业务逻辑中将此指针删除了。这种在代码量很少的情况下,很容易被发现,但是代码量多了,逻辑多了的时候,想一下子定位到问题所在,就没那么容易了。
结论:避免直接使用原生指针,尽量都用智能指针,随意的delete,会在你稍不注意的时候,就引入bug,而且极其难定位问题所在。
以下是顶层逻辑,在业务逻辑中,会删除m_World.GetEntityArray中的对象,导致内存访问违规!!!
主要是顶层逻辑中引用了一个指针,而在业务逻辑中将此指针删除了。这种在代码量很少的情况下,很容易被发现,但是代码量多了,逻辑多了的时候,想一下子定位到问题所在,就没那么容易了。
结论:避免直接使用原生指针,尽量都用智能指针,随意的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(); } } }
相关文章推荐
- 使用pthread和指针类型转换在C++中的几点要注意的
- 【C/C++】Linux下使用system()函数一定要谨慎
- 【C/C++】Linux下使用system()函数一定要谨慎
- 【C/C++】Linux下使用system()函数一定要谨慎
- 【C/C++】Linux下使用system()函数一定要谨慎
- c++ shared_ptr智能指针使用注意事项
- 【C/C++】Linux下使用system()函数一定要谨慎
- 【C/C++】Linux下使用system()函数一定要谨慎
- 关注C++细节——浅谈指针使用中注意…
- 【C/C++】Linux下使用system()函数一定要谨慎
- c/c++中使用指针需要注意的问题
- ~c++中的指针使用注意事项
- 【C/C++】Linux下使用system()函数一定要谨慎
- C++随笔(指针和引用的使用注意事项)
- 关注C++细节——浅谈指针使用中注意事项
- 【C/C++】Linux下使用system()函数一定要谨慎
- c++ shared_ptr智能指针使用注意事项
- ~c++中的指针使用注意事项
- 【C/C++】Linux下使用system()函数一定要谨慎
- 【C/C++】Linux下使用system()函数一定要谨慎