当前位置: 首页 > news >正文

杭州低价做网站做设计找素材的 网站有哪些

杭州低价做网站,做设计找素材的 网站有哪些,wordpress怎么缩进,阳江公司做网站c11智能指针 shared_ptr介绍注意事项示例解决方案 weak_ptr特点示例 unique_ptr特点示例 shared_ptr 介绍 shared_ptr 是一种智能指针#xff0c;用于自动管理动态分配的对象的生命周期。它通过引用计数机制来确保当最后一个 shared_ptr 指向一个对象时#xff0c;该对象会… c11智能指针 shared_ptr介绍注意事项示例解决方案 weak_ptr特点示例 unique_ptr特点示例 shared_ptr 介绍 shared_ptr 是一种智能指针用于自动管理动态分配的对象的生命周期。它通过引用计数机制来确保当最后一个 shared_ptr 指向一个对象时该对象会被自动销毁。 注意事项 当两个或多个 shared_ptr 实例相互引用时会形成一个环形引用导致引用计数永远不会达到零从而引起内存泄漏。 示例 #include memory #include iostreamclass B; // 前向声明class A { public:std::shared_ptrB b_ptr;~A() {std::cout A destructor called std::endl;} };class B { public:std::shared_ptrA a_ptr;~B() {std::cout B destructor called std::endl;} };int main() {std::shared_ptrA a std::make_sharedA();std::shared_ptrB b std::make_sharedB();a-b_ptr b;b-a_ptr a;return 0; }在这个例子中A 的实例持有 B 的一个 shared_ptr而 B 的实例也持有 A 的一个 shared_ptr。这导致它们的引用计数永远不会降到零因此它们的析构函数永远不会被调用从而造成内存泄漏。 解决方案 使用 std::weak_ptr std::weak_ptr 是一种智能指针它不会增加对象的引用计数。它设计用来解决 shared_ptr 的环形引用问题。你可以将其中一个对象的 shared_ptr 替换为 weak_ptr 来避免环形引用 #include memory #include iostreamclass B; // 前向声明class A { public:std::weak_ptrB b_ptr; // 使用 weak_ptr 替代 shared_ptr~A() {std::cout A destructor called std::endl;} };class B { public:std::shared_ptrA a_ptr;~B() {std::cout B destructor called std::endl;} };int main() {std::shared_ptrA a std::make_sharedA();std::shared_ptrB b std::make_sharedB();a-b_ptr b;b-a_ptr a;return 0; }在这个修改后的例子中A 类使用 std::weak_ptr 来引用 B 类的实例。这样A 对 B 的引用不会增加 B 的引用计数。因此当 main 函数结束时a 和 b 的引用计数都会降到零它们所指向的对象将被正确销毁从而避免了内存泄漏。 weak_ptr weak_ptr 是一种智能指针用于观察 std::shared_ptr 所管理的对象但不拥有该对象。std::weak_ptr 不会增加对象的引用计数因此不会影响对象的生命周期。它主要用于解决 std::shared_ptr 的环形引用问题。 特点 不拥有对象只是观察者。用于监视 std::shared_ptr但不影响其引用计数。可以从 std::weak_ptr 创建 std::shared_ptr 来访问对象如果对象还存在。 示例 #include iostream #include memoryclass Widget { public:Widget() { std::cout Widget constructed\n; }~Widget() { std::cout Widget destroyed\n; } };int main() {std::shared_ptrWidget sharedPtr std::make_sharedWidget();std::weak_ptrWidget weakPtr sharedPtr;std::cout Shared count: sharedPtr.use_count() std::endl; // 输出 1if (auto tempSharedPtr weakPtr.lock()) { // 尝试从 weak_ptr 获取 shared_ptrstd::cout Object is alive\n;} else {std::cout Object is destroyed\n;}sharedPtr.reset(); // 释放 shared_ptr 所有权if (auto tempSharedPtr weakPtr.lock()) { // 再次尝试获取std::cout Object is alive\n;} else {std::cout Object is destroyed\n; // 此时输出}return 0; }unique_ptr unique_ptr 是一种智能指针它提供对单一对象的独占所有权。这意味着 std::unique_ptr 实例拥有它所指向的对象并且不允许复制该智能指针只允许移动。当 std::unique_ptr 被销毁时它所指向的对象也会被自动销毁。 特点 独占所有权模型。不支持复制只支持移动。自动释放所拥有的资源。轻量级开销小。 示例 #include iostream #include memoryclass Widget { public:Widget() { std::cout Widget constructed\n; }~Widget() { std::cout Widget destroyed\n; } };int main() {std::unique_ptrWidget widgetPtr std::make_uniqueWidget();// std::unique_ptrWidget anotherPtr widgetPtr; // 编译错误不能复制std::unique_ptrWidget movedPtr std::move(widgetPtr); // 移动是允许的return 0; }
http://www.tj-hxxt.cn/news/143594.html

相关文章:

  • 电子商城网站设计实训报告成都做网站设计公司价格
  • 最基本的网络营销站点o2o网站开发相关技术
  • 微信商城网站网站排名优化
  • php网站开发实验总结绵阳网站建设企业
  • 高校后勤网站建设要求及内容凯里网络公司
  • 云游戏网页快速网站优化哪家好
  • 合肥庐阳区建设局网站淘宝的网站怎么做
  • 黄石网站建设多少钱在线资源
  • o2o 电商网站 微商城 ppt企业做网站需注意什么
  • 光聚济南网站建设学做网站如何创业
  • 母婴网站建设 社区国家企业信用网查询系统
  • 企业建设网站公司排名苏州做门户网站的公司
  • 建立网站有什么用南京广告公司电话
  • 做棋牌网站建设做国际黄金看什么网站
  • 深圳网站建设哪个使用dw设计个人简历网页模板
  • 河北城乡建设厅网站nodejs php wordpress
  • 企业网站建设费用怎么做账纯静态网站怎么做cdn
  • 图书馆网站建设研究功能主机网站
  • 服务好的网站建设联系人wordpress腾讯地图插件
  • 小米网站设计wordpress 按钮支付
  • 大型网站建设设备建筑培训网官网证件查询
  • 一个网站项目多少钱展台设计方案介绍
  • 正规的企业网站建设公司备案域名在线购买
  • 建设产品网站wordpress超级留言板路径
  • 爱唐山做贡献月评十佳投票网站正规做兼职的网站
  • 大同建设银行保安招聘网站wordpress添加发布视频教程
  • 网站建设 天津网站开发流程分为哪几个阶段
  • 舟山网站设计公司徐州百度快照优化
  • 想自己做淘宝有什么网站网站广告位制作
  • 公益网站怎么做哪家公司做的网站好