注意!!一定要谨慎使用c/c++原生指针
生活随笔
收集整理的這篇文章主要介紹了
注意!!一定要谨慎使用c/c++原生指针
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
使用指針,要非常小心,今天在做一個小游戲時,就碰到一個使用原生指針的問題,找了好幾個小時,才定位到問題的所在,暈。
主要是頂層邏輯中引用了一個指針,而在業(yè)務(wù)邏輯中將此指針刪除了。這種在代碼量很少的情況下,很容易被發(fā)現(xiàn),但是代碼量多了,邏輯多了的時候,想一下子定位到問題所在,就沒那么容易了。
結(jié)論:避免直接使用原生指針,盡量都用智能指針,隨意的delete,會在你稍不注意的時候,就引入bug,而且極其難定位問題所在。
?
以下是頂層邏輯,在業(yè)務(wù)邏輯中,會刪除m_World.GetEntityArray中的對象,導(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++原生指针的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实习半个月的感想
- 下一篇: QT学习笔记之QTableView设置属