2009-11-15 53 views
3

我想知道是否可以安全地做到這一點後,立即指針...分配給刪除

delete p_pointer; 
p_pointer = p_otherPointer; 

不是...

delete p_pointer; 
p_pointer = 0; 
p_pointer = p_otherPointer; 

我會假設這樣,因爲有沒有刪除和分配之間的任何新的內存分配,但我只是想確保。

回答

16

是的,它是安全的。如果您要重新指定它,將刪除的指針設置爲NULL是無用的。人們將刪除指針設置爲NULL的原因是,它們可以將其標記爲已刪除,以便以後可以檢查它是否已被刪除。

+1

而且,因爲如果他們不小心調用'反對,它應該delete'很好地表現一個空指針。 – 2009-11-15 13:58:44

6

是的。 delete是一個運營商。您將它傳遞給一個指針,並刪除該指針指向的對象。它對指針本身沒有任何作用。

這一點後,就可以不再提領與的指針該指針了,但你可以繼續在適當的類型的不同對象指向它使用指針變量本身,例如。

1

其實auto_ptr::reset正是這麼做的(至少在實現我見過)