欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

C++11 std::shared_ptr的std::move()移动语义底层分析

发布时间:2023/12/1 c/c++ 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 C++11 std::shared_ptr的std::move()移动语义底层分析 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

std::shared_ptr的std::move()移动语义底层分析

执行std::move()之前:


执行std::move()之后:


结论:一个浅拷贝

sizeof(std::shared_ptr) = 8字节
pss1 : 0x0028fea8
pss2 : 0x0028fea0
(栈是逆增长的)
观察执行std::move前,pss1 : 0x0028fea8 开始的8个字节的值,
然后执行后 pss1 : 0x0028fea8开始的8个字节的值复制到 pss2 : 0x0028fea0 后,清零pss1 : 0x0028fea8 开始的8个字节的值。

过程:

std::move()的功能是将一个左值转换为右值,
所以执行std::stdred_ptr<> pss2(std::move(pss1))时,是调用了std::shared_ptr<>的移动构造函数(移动构造是需要一个右值),而该移动构造函数是一个浅拷贝的操作。

总结

以上是生活随笔为你收集整理的C++11 std::shared_ptr的std::move()移动语义底层分析的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。