尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

【C++面试题】深拷贝/浅拷贝

【C++面试题】深拷贝/浅拷贝
📅 发布时间:2026/6/21 21:40:02
特性浅拷贝 (Shallow Copy)深拷贝 (Deep Copy)
操作对象仅复制指针变量本身(64位系统通常 8 字节)。复制指针指向的整块内存数据。
内存地址两个指针指向同一个地址 (0x1234)。两个指针指向不同的地址 (A指0x1234, B指0x5678)。
数据独立性高度耦合。修改 A 的数据,B 也会变。完全独立。修改 A 的数据,B 不受影响。
速度极快(仅赋值一个整数)。较慢(涉及 malloc/new 和内存搬运)。
主要风险双重释放 (Double Free):如果 A 析构删了内存,B 就成了悬空指针,B 再析构就会崩。内存消耗大:如果对象很大,频繁深拷贝会撑爆内存或拖慢 CPU。
A. 普通数据类型

对于普通数据类型(基础类型如int,double,bool,char以及不包含指针的简单struct/class),深拷贝和浅拷贝没有任何区别。

B. 标准容器 (std::vector,std::string)
  • std::vector<int> b = a;

    • 这是深拷贝。b会在堆上申请新空间,把a的元素都拷过去。

  • std::vector<Node*> b = a;

    • 容器本身是新的(深拷贝),但容器里的元素是指针(浅拷贝)。

C. OpenCV 应用 (cv::Mat)
cv::Mat A = cv::imread("img.jpg"); cv::Mat B = A; // 【浅拷贝】B 和 A 共享同一块图像数据。修改 B 的像素,A 也会变。 // OpenCV 内部使用了“引用计数”机制,安全,不会 Double Free。 cv::Mat C = A.clone(); // 【深拷贝】C 拥有独立的图像数据。修改 C,A 不变。
D. 设计原则
  • 全局共享资源:必须浅拷贝

    • 原因:为了保证一致性。

    • 实现:使用指针或智能指针 (std::shared_ptr)。

  • 线程私有数据:必须深拷贝

    • 原因:为了保证线程安全和数据隔离。

    • 实现:显式调用.clone()或拷贝构造。

  • 函数传参:尽量用引用 (const &)

    • 原则:既不要深拷贝(慢),也不要浅拷贝(为了不增加引用计数开销),直接传引用。

相关新闻

  • ASR概念和术语学习指南(2):传统 ASR 系统的工作流程
  • 还在为论文查重率爆表而熬夜?这8款免费AI论文生成器一键极速搞定!
  • 深度学习框架YOLOV8模型如何训练水面及河道漂浮物垃圾检测数据集 建立基于深度学习YOLOV8河道水面垃圾检测系统

最新新闻

  • 2026年6月口碑好的PP鱼池生产商哪家可靠,循环水养鱼系统/超市海鲜暂养池/中转暂养池,PP鱼池生产企业找哪家 - 品牌推荐师
  • Selenium自动化测试框架实战:从脚本到CI/CD集成
  • Python 3数据类型全景解析:从内置类型到类型提示实战
  • 抖音视频怎么无水印保存?2026最新年抖音无水印保存视频最新方法全测 - 爱上科技热点
  • 深入解析NXP LS1046A SEC硬件安全协处理器作业终止状态与错误码
  • MC1322x USB Dongle硬件设计、射频布局与嵌入式开发实战指南

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号