news 2026/3/8 17:20:07

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【C++面试题】深拷贝/浅拷贝
特性浅拷贝 (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 &)

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/4 2:15:58

YOLOv8官方文档中文翻译:models/yolov8使用示例

YOLOv8实战指南&#xff1a;从模型到镜像的端到端开发体验 在智能摄像头遍布街头巷尾、自动驾驶车辆穿梭于城市道路的今天&#xff0c;实时目标检测早已不再是实验室里的概念&#xff0c;而是支撑无数AI应用落地的核心能力。如何快速构建一个高精度、低延迟的目标检测系统&…

作者头像 李华
网站建设 2026/3/4 8:22:01

YOLOv8课程体系规划:系统化学习路线图

YOLOv8课程体系规划&#xff1a;系统化学习路线图 在智能摄像头自动识别行人、工厂产线实时检测产品缺陷、无人机视觉导航等场景背后&#xff0c;目标检测技术正以前所未有的速度改变着现实世界。而在众多算法中&#xff0c;YOLOv8 凭借其“快而准”的特质&#xff0c;已成为工…

作者头像 李华
网站建设 2026/3/3 15:22:48

R语言生态模型诊断实战:90%科研人员忽略的3个关键指标解析

第一章&#xff1a;R语言生态环境模型诊断概述 R语言作为统计计算与数据分析的主流工具&#xff0c;在生态环境建模领域展现出强大的灵活性和扩展性。其丰富的包生态系统支持从数据预处理、模型构建到结果可视化的完整工作流&#xff0c;广泛应用于物种分布模型、生态系统动态模…

作者头像 李华
网站建设 2026/3/4 8:43:30

YOLOv8智慧农业试点工程成果汇报

YOLOv8智慧农业试点工程成果汇报 在一片广袤的稻田上&#xff0c;无人机正低空掠过&#xff0c;镜头不断捕捉叶片上的细微斑点。几分钟后&#xff0c;农户手机上的APP弹出一条预警&#xff1a;“第3区发现稻飞虱早期迹象&#xff0c;建议48小时内喷施生物农药。”这不再是科幻场…

作者头像 李华
网站建设 2026/3/4 2:24:22

R语言ggplot2深度优化技巧,打造零瑕疵学术图形

第一章&#xff1a;R语言高质量学术图形的核心理念在学术研究中&#xff0c;图形不仅是数据的可视化呈现&#xff0c;更是科学论证的重要组成部分。R语言凭借其强大的图形系统和灵活的定制能力&#xff0c;成为生成高质量学术图表的首选工具。一个优秀的学术图形应具备清晰性、…

作者头像 李华
网站建设 2026/3/3 19:09:37

为什么你的模型不稳定?:用R语言精准识别关键变量破局

第一章&#xff1a;为什么你的模型不稳定&#xff1f;在机器学习项目中&#xff0c;模型训练过程的不稳定性是常见但令人困扰的问题。它可能表现为损失函数剧烈震荡、梯度爆炸或收敛缓慢&#xff0c;最终导致模型性能不可靠。理解其根本原因并采取针对性措施&#xff0c;是构建…

作者头像 李华