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

阿里云C++二面面经

1.智能指针

1、shared_ptr

  • 原理:shared_ptr是基于引用计数的智能指针,用于管理动态分配的对象。无论 std::shared_ptr 存储在堆区还是栈区,它所指向的内存块始终存储在堆区。这是因为 std::shared_ptr 是用于管理动态分配的内存的智能指针,它需要存储在堆区,以便进行引用计数和自动释放内存
  • 使用场景:适用于多个智能指针需要共享同一块内存的情况。例如在多个对象之间共享某个资源。

2、 unique_ptr

  • 原理:unique_ptr是独占式智能指针,意味着他独占拥有所管理的对象,当其生命周期结束时,对象会自动销毁。
  • 使用场景:适用于不需要多个指针共享同一内存的情况,即单一所有权。通常用于动态分配的对象
    或文件句柄。

3、weak_ptr

  • 原理:weak_ptr是一种弱指针,他不增加引用计数。它通常用于协助shared_ptr,以避免循环引用问题。
  • 使用场景:适用于协助解决shared_ptr的循环引用问题,其中多个shared_ptr互相引用,会导致内存泄漏。

4、auto_ptr (已废弃)

  • 原理:std::auto_ptr是C++98标准引入的智能指针,用于独占地管理对象。但由于其存在潜在的问题,已在C++11中被废弃。
  • 使用场景:在C++98标准中,可用于独占性地管理动态分配的对象。不推荐在现代C++中使用。

2.栈和堆的区别

1、

相关文章:

  • JZ22:链表中倒数第k个结点
  • 分享篇:最近在研究的AIGC内容
  • 论文笔记--Baichuan 2: Open Large-scale Language Models
  • SpringCloud GateWay自定义过滤器之GatewayFilter和AbstractGatewayFactory
  • 计算机视觉的应用16-基于pytorch框架搭建的注意力机制,在汽车品牌与型号分类识别的应用
  • 【QT基础入门】QT中的容器类:QList
  • 机器人制作开源方案 | 智能家庭防护机器人
  • 精益管理3个阶段,如何实现高效企业管理?
  • 【工艺库】SMIC数字后端工艺库
  • Linux系统编程——进程中vfork函数
  • vue3使用element-plus
  • Python---数据序列中的公共方法
  • 性能测试 —— Jmeter接口处理不低于200次/秒-场景
  • table表格的某一行数据如何回填
  • spark调优案例分享
  • ADFS 高可用配置 + NLB配置(Windows网络负载均衡)
  • 减轻关键基础设施网络安全风险的 3 种方法
  • jupyter lab配置列表清单
  • Python基础入门----如何使用 Pipenv 在项目目录中创建虚拟环境
  • 前端---认识JS
  • 小雨伞保险经纪母公司手回集团通过港交所聆讯
  • 音乐节困于流量
  • 最高人民法院、中国证监会联合发布《关于严格公正执法司法 服务保障资本市场高质量发展的指导意见》
  • 基金经理调仓引发大金融板块拉升?公募新规落地究竟利好哪些板块
  • 晋级四强!WTA1000罗马站:郑钦文2比0萨巴伦卡
  • 外交部:反对美方人士发表不负责任谬论