Есть ли в данной программе "неопределённое поведение" (undefined behavior - UB)? Если да, то что нужно исправить?
один вариант
#include<iostream> #include<memory> usingnamespacestd;
classC {};
intmain(){
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();
Наш сайт использует куки чтобы обеспечить качественную работу функционала сайта. Продолжая использовать сайт proghub.ru, вы соглашаетесь с нашей политикой cookie.