微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

共享指针混淆

如何解决共享指针混淆

我目前正在学习智能指针,但有点困惑。为什么共享指针既不使用简单打印也不使用 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 ? 

谢谢

解决方法

x2x 指向的位置不同。

std::shared_ptr<int> x2 = std::make_shared<int>(x);

这一行创建了一个指向 int 的新指针,并使用 x 的值对其进行初始化。

所以他们在这一点上唯一的共同点是指针 xx2 都指向值为 100 的 int。还有 2 个不同的 {{ 1}}虽然。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。