Опасен ли новый вызов дважды на одном и том же vtkSmartPointer?

В соответствии с этот вопрос, вы не можете вызвать новый дважды на тот же обычный указатель без удаления, но что, если вы работаете с vtkSmartPointers? У меня было несколько случаев, когда вызов Delete () для такого умного указателя давал ошибку сегментации, даже если после нее было объявлено New ().
Как я могу полностью уничтожить объект и создать новый? Мне нужно это, чтобы уничтожить окно vtkRenderWindow. Заранее спасибо.

-3

Решение

vtkSmartPointers должны быть безопасны для перезаписи, так как их целью является очистка выделенной памяти самостоятельно, когда они уничтожены. Однако, если какая-либо другая копия смарт-указателя останется, окно не будет немедленно уничтожено при перезаписи «оригинального» смарт-указателя.

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

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector