C++ - Есть ли в данной программе "неопределённое поведение" (undefined behavior - UB)? Если да, то что нужно исправить? | ProgHub
Есть ли в данной программе "неопределённое поведение" (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();