小编Mas*_*deh的帖子

当原始指针和唯一指针都引用同一对象时,如何避免双重释放?

在下面的代码中,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我得到这个运行时错误“指针被释放未分配”

c++ pointers memory-management

0
推荐指数
1
解决办法
73
查看次数

标签 统计

c++ ×1

memory-management ×1

pointers ×1