2013-05-10 72 views
-3

根據this的問題,你不能在同一個正常的指針沒有刪除,而是兩次調用新的,但如果你正在與vtkSmartPointer s?我有幾個occations,在這樣一個智能指針上調用Delete()時,即使在它後面聲明瞭New(),也會出現分割錯誤。 我該如何徹底銷燬對象並創建一個新對象?我需要這個來銷燬vtkRenderWindow。提前致謝。在同一個vtkSmartPointer不安全的情況下調用新的兩次?

+3

新不適用於指針。新提供了一個指針。 – bmargulies 2013-05-10 11:35:02

+0

爲什麼指向相同的位置,然後再次調用新的? – Didii 2013-05-10 11:46:19

回答

1

vtkSmartPointers應該是安全的覆蓋,因爲它們的目的是當它們被破壞時自行清理分配的內存。但是,如果智能指針的任何其他副本仍然存在,則當您覆蓋「原始」智能指針時,該窗口不會立即被破壞。

vtkSmartPointer<vtkRenderWindow> rw; 
rw = vtkRenderWindow<vtkRenderWindow>::New(); 
rw = vtkRenderWindow<vtkRenderWindow>::New(); // destructor of previous instance is invoked, which deletes the pointer 
相關問題