對象刪除後,指針要賦值NULL

看Code

   1: class B
   2: {
   3: };
   4:  
   5: class A
   6: {
   7: public:
   8:     A()
   9:     {
  10:         m_pB = new CB;
  11:     }
  12:     ~A()
  13:     {
  14:         delete m_pB;
  15:         m_pB = NULL;//強烈建議保留該行code
  16:     }
  17: private:
  18:     CB * m_pB;
  19: };

相信很多人都認爲Line 15是完全沒有必要的,因爲對象已經銷燬且沒人再用這個對象了;保留該行有如下好處:

1. 我們不能保證沒有其他人調用該類CA,也就是說,有可能CA的實例被其他部分使用。

2. 一旦出現CA實例銷燬後被其他模塊使用的情況,我們在debug的時候很容易通過設置的“m_pB=NULL”來發現是否CA已經被銷燬;否則,CA被銷燬後,m_pB保留的是一個根本無法訪問的野指針,表面看仍舊是個有效的地址,但其實它已經被銷燬了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章