在下面的代码中,x(原始pinter)和p(唯一指针)都指向变量a;所以值“ a”的变化反映了两个指针的取消引用。我知道“ p”拥有&a的所有权。双重释放?
#include <iostream>
#include <memory>
int main() {
int a = 5;
int *x = &a;
std::unique_ptr<int> p(&a);
*p = 6;
std::cout<< *x << *p <<'\n';
// prints 66
*x =7;
std::cout <<*x <<*p <<"\n";
// 77
std::cout << "Done!"<<'\n';
}
Run Code Online (Sandbox Code Playgroud)
PS我得到这个运行时错误“指针被释放未分配”