注意!!一定要谨慎使用c/c++原生指针
生活随笔
收集整理的這篇文章主要介紹了
注意!!一定要谨慎使用c/c++原生指针
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
使用指針,要非常小心,今天在做一個(gè)小游戲時(shí),就碰到一個(gè)使用原生指針的問題,找了好幾個(gè)小時(shí),才定位到問題的所在,暈。
主要是頂層邏輯中引用了一個(gè)指針,而在業(yè)務(wù)邏輯中將此指針刪除了。這種在代碼量很少的情況下,很容易被發(fā)現(xiàn),但是代碼量多了,邏輯多了的時(shí)候,想一下子定位到問題所在,就沒那么容易了。
結(jié)論:避免直接使用原生指針,盡量都用智能指針,隨意的delete,會(huì)在你稍不注意的時(shí)候,就引入bug,而且極其難定位問題所在。
?
以下是頂層邏輯,在業(yè)務(wù)邏輯中,會(huì)刪除m_World.GetEntityArray中的對(duì)象,導(dǎo)致內(nèi)存訪問違規(guī)!!!
//邏輯函數(shù)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();}}}?
轉(zhuǎn)載于:https://www.cnblogs.com/shanql/p/6619264.html
總結(jié)
以上是生活随笔為你收集整理的注意!!一定要谨慎使用c/c++原生指针的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实习半个月的感想
- 下一篇: [SDOI2015]星际战争