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

WordPress做大站如何让百度收录网址

WordPress做大站,如何让百度收录网址,招标网站建设申请,青岛市疫情最新情况地图一、核心概念深入解析 1. shared_ptr 的线程安全性澄清 引用计数是原子操作:shared_ptr 的引用计数(use_count)在多线程中递增 / 递减是安全的(原子操作),但对象本身的读写需额外同步(如 std:…

一、核心概念深入解析

1. shared_ptr 的线程安全性澄清
  • 引用计数是原子操作shared_ptr 的引用计数(use_count)在多线程中递增 / 递减是安全的(原子操作),但对象本身的读写需额外同步(如 std::mutex)。
  • 误区纠正:线程安全仅针对计数管理,若多个线程同时修改对象数据,仍需加锁避免数据竞争。
2. shared_ptr 构造方式对比
方式示例安全性性能推荐度
直接构造(显式)shared_ptr<int> p(new int(42));需避免裸指针重复使用中等★★☆☆☆
工厂函数 make_sharedauto p = make_shared<int>(42);安全(避免裸指针)优(单次分配)★★★★★
拷贝 / 移动构造shared_ptr<int> p2 = p1;安全★★★★☆

  • make_shared 优势
    • 减少内存分配次数(对象和控制块一次分配)。
    • 避免表达式求值顺序导致的潜在泄漏(如 shared_ptr(populate(), commit()) 中若 populate 抛异常,commit 可能未调用)。
3. 删除器(Deleter)的高级用法
  • 类型:可以是函数指针、lambda、函数对象。
  • 示例:lambda 删除器

    cpp

    shared_ptr<FILE> file(fopen("test.txt", "w"), [](FILE* fp) { fclose(fp); cout << "File closed\n"; });
    
  • 数组管理

    cpp

    shared_ptr<int> arr(new int[5], [](int* p) { delete[] p; }); // 自定义删除器处理数组
    
4. 循环引用的本质与解决
  • 场景:双向链表节点互相持有 shared_ptr

    cpp

    class Node {
    public:shared_ptr<Node> next;shared_ptr<Node> prev;~Node() { cout << "Node destroyed\n"; }
    };int main() {auto a = make_shared<Node>();auto b = make_shared<Node>();a->next = b; // a强引用b(b计数+1)b->prev = a; // b强引用a(a计数+1)// 离开作用域时,a和b计数均为1(循环引用),无法释放 → 内存泄漏
    }
    
  • 解决方案:用 weak_ptr 打破强引用

    cpp

    class Node {
    public:shared_ptr<Node> next;weak_ptr<Node> prev; // 弱引用,不影响计数~Node() { cout << "Node destroyed\n"; }
    };
    // 此时,a和b计数均为1,离开作用域时正常释放
    
5. weak_ptr 的核心特性
  • 不影响引用计数weak_ptr 构造 / 赋值时,shared_ptr 计数不变。
  • 访问数据的唯一方式

    cpp

    weak_ptr<int> wp(sp); // wp观察sp
    if (auto tmp = wp.lock()) { // 转换为shared_ptr,非空时访问cout << *tmp << endl;
    }
    
  • 用途
    • 避免循环引用。
    • 实现 “观察者模式”(观察共享资源是否存在)。
    • 缓存(如缓存对象,存在时直接使用,不存在时重建)。

二、面试高频问题与回答模板

问题 1:shared_ptr 循环引用是什么?如何解决?

回答
循环引用指两个或多个 shared_ptr 互相强引用,导致引用计数无法归零,内存无法释放。
示例:双向链表节点互相持有 shared_ptr,形成环。
解决方案
将其中一个引用改为 weak_ptr(弱引用),weak_ptr 不增加计数,打破循环。

cpp

class Node {
public:shared_ptr<Node> next;weak_ptr<Node> prev; // 弱引用
};
问题 2:weak_ptr 有什么作用?如何访问其指向的数据?

回答
weak_ptr 是 shared_ptr 的辅助类,用于:

  1. 解决循环引用(弱引用不影响计数)。
  2. 观察 shared_ptr 是否存在(通过 lock() 检查)。
    访问数据步骤

cpp

weak_ptr<int> wp(sp); // 关联shared_ptr
if (auto locked_sp = wp.lock()) { // 转换为shared_ptr,非空时有效cout << *locked_sp << endl; // 通过shared_ptr访问
}
问题 3:shared_ptr 和 unique_ptr 的区别?

回答

特性shared_ptrunique_ptr
所有权共享(多个指针指向同一资源)独占(唯一所有权)
引用计数
拷贝 / 赋值允许(计数变化)禁止(仅可移动)
适合场景多指针共享资源独占资源(如函数返回值)
性能稍低(计数开销)更高
问题 4:为什么推荐使用 make_shared 而非直接 new?

回答

  1. 性能优化make_shared 一次分配内存(对象 + 控制块),减少 new 和 delete 次数。
  2. 异常安全:避免表达式求值顺序导致的资源泄漏(如 shared_ptr(populate(), commit()) 中若 populate 抛异常,commit 可能未调用,而 make_shared 无此问题)。
  3. 代码简洁:自动推导类型,无需显式指定模板参数(auto 配合使用)。
问题 5:shared_ptr 如何管理非堆内存资源(如文件句柄)?

回答
通过自定义删除器指定释放逻辑,而非默认的 delete
示例

cpp

void fclose_deleter(FILE* fp) { fclose(fp); }
shared_ptr<FILE> file(fopen("test.txt", "r"), fclose_deleter);
// 或用lambda:
// shared_ptr<FILE> file(fopen("test.txt", "r"), [](FILE* fp){ fclose(fp); });

三、总结:面试核心考点

  1. shared_ptr 原理:引用计数、RAII、线程安全边界(计数安全,对象操作需同步)。
  2. 最佳实践:优先 make_shared,避免裸指针,用 weak_ptr 解决循环引用。
  3. weak_ptr 定位:辅助 shared_ptr,仅观察不持有资源,需通过 lock() 访问数据。
  4. 场景题:能结合双向链表等场景,分析循环引用成因并给出解决方案。

通过以上梳理,可系统掌握 shared_ptr/weak_ptr 的核心知识,从容应对面试中的原理分析与场景题。

http://www.dtcms.com/wzjs/284265.html

相关文章:

  • 做设计适合关注的网站网络营销的内涵
  • 旅游景点介绍网页制作网站怎么优化自己免费
  • 网站改版工作方案福建百度推广开户
  • 外贸出口工艺品怎么做外贸网站怎样留别人电话在广告上
  • 中国建设部官方网站证件查询交换友情链接的意义是什么
  • 昆山移动网站建设今天合肥刚刚发生的重大新闻
  • 影视文化网站建设百度搜索资源平台官网
  • 上海网站建设官方网站视频seo优化教程
  • 政府采购网招标公告怎么下载aso优化方法
  • 义乌建设局网站打不开网络营销推广公司有哪些
  • appcms程序怎么做网站域名注册管理中心网站
  • 广州网站建设大公司排名阿里关键词排名查询
  • 怎么样网站吸引人自然搜索优化
  • 免费企业网站wordpress免费网站
  • 网站制作结构站长之家seo查询
  • 找人做的网站第二年多钱百度关键词排名查询
  • 日本有一个做青蛙模型的网站网站域名查询ip地址
  • 汕头seo推广优化重庆seo教程博客
  • h5网站开发定制关键词怎么选择技巧
  • 鞍山网站制作谁家好谷歌seo详细教学
  • 做网站价格注册网站流程
  • 网站开发所需能力建立网站平台需要多少钱
  • 设计网站建设seo优化网站教程百度
  • wordpress 建站 图床东莞网站建设推广平台
  • 90设计网站会员全站通与电商模板的区别营销策划公司主要做些什么
  • 策划案需要给做网站吗推广小程序拿佣金
  • 网站宣传页网站维护费用一般多少钱
  • 哪个网站可以做社工试题域名查询备案
  • 收录网站工具西安seo霸屏
  • 做游戏特效的网站百度快速排名软件