Есть ли в данной программе "неопределённое поведение" (undefined behavior - UB)? Если да, то что нужно исправить?

#include <iostream> 
#include <memory> 
using namespace std; 
 
class C {}; 
 
int main() { 
    C *ptr; 
    ptr = new C(); 
    unique_ptr<C> uptr(ptr); 
    // ...some code... 
    delete ptr; 
} 
В исходной программе нет UB.
После строки delete ptr; добавить ptr = nullptr;
Перед строкой delete ptr; добавить ptr = uptr.get();
Перед строкой delete ptr; добавить ptr = uptr.release();
Перед строкой delete ptr; добавить ptr = uptr.reset();
После строки delete ptr; добавить ptr = uptr.reset();