std::unique_ptr<std::string> foo_ptr(new std::string("foo"));
foo_ptr.reset(foo_ptr.get());
std::cout << *foo_ptr << std::endl; //prints "foo" so obj hasn't been deleted
//runtime error: "pointer being freed was not allocated"
Почему я получаю ошибку времени выполнения, и это просто совпадение, которое распечатывает «foo»?Simple unique_ptr issue
Это неопределенное поведение. Все может случиться. Программа перестала быть действующей программой на линии №: 3. –
Да, это совпадение. На самом деле это носовой демон. –
Кстати: лучший способ узнать, что что-то было разрушено, - это создать класс, который печатает что-то на его деструкторе. –