当前位置: 首页 > 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、

http://www.lryc.cn/news/230769.html

相关文章:

  • Ubuntu 20.04编译Chrome浏览器
  • 大文件分片上传、断点续传、秒传
  • DAY53 1143.最长公共子序列 + 1035.不相交的线 + 53. 最大子序和
  • 短剧App开发:个性化的内容推荐
  • 互斥量保护资源
  • 天机学堂-1、项目搭建,微服务架构设计
  • windows 电脑删除不了.TTF的文件
  • C#多线程的操作
  • MyBatis Plus—CRUD 接口
  • 火焰图:链路追踪分析的可视化利器
  • 中睿天下Coremail | 2023年Q3企业邮箱安全态势观察报告
  • HBuilderX vue项目打包上传到服务器
  • 2656. K 个元素的最大和 --力扣 --JAVA
  • 从HTTP到Tomcat:揭秘Web应用的底层协议与高性能容器
  • 百度搜索智能化算力调控分配方法
  • 如何搭建接口自动化测试框架?
  • ubuntu 20.04+ORB_SLAM3 安装配库教程
  • Poly风格模型的创建与使用_unity基础开发教程
  • 终于有人把VMware虚拟机三种网络模式讲清楚了!
  • Flutter实践二:repository模式
  • 交换机Vlan和端口配置(H3C)
  • vue自定义指令控制权限
  • jquery获取url参数
  • SpringBoot和Spring源码下载
  • 【算法练习Day49】每日温度下一个更大元素 I
  • Maven打包时跳过测试代码
  • 2023-2024 年适用于 Windows 电脑的顶级视频录制软件
  • 2023-11-14 mysql-主从复制-重置主从连接-记录
  • go语言学习之旅之安装sdk环境,hello world!
  • 《Linux从练气到飞升》No.28 Linux中的线程同步