如何解决共享指针混淆
我目前正在学习智能指针,但有点困惑。为什么共享指针既不使用简单打印也不使用 get() 打印存储为原始指针的内存地址?
int x = 100;
int* y = &x;
std::cout<<&x<<std::endl;
std::cout<<y<<std::endl;
std::shared_ptr<int> x2 = std::make_shared<int>(x);
std::cout<<x2.get()<<std::endl
0x7ffe965e20b4
0x7ffe965e20b4
**0x2176c30** so why this value is for both x2.get() and x2 ?
谢谢
解决方法
x2
与 x
指向的位置不同。
std::shared_ptr<int> x2 = std::make_shared<int>(x);
这一行创建了一个指向 int 的新指针,并使用 x
的值对其进行初始化。
所以他们在这一点上唯一的共同点是指针 x
和 x2
都指向值为 100 的 int
。还有 2 个不同的 {{ 1}}虽然。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。