news 2026/7/21 2:25:41

【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/7/20 13:01:17

​​解锁AI Agent开发新姿势:Coze Studio,让创意秒变现实

引言 在AI技术飞速发展的今天&#xff0c;AI Agent&#xff08;智能体&#xff09;已成为推动行业变革的核心力量。无论是智能客服、自动化流程&#xff0c;还是个性化助手&#xff0c;AI Agent的应用场景正不断拓展。然而&#xff0c;传统开发方式往往需要深厚的编程基础和复…

作者头像 李华
网站建设 2026/7/21 17:20:49

YOLOv8图文匹配潜力评估

YOLOv8图文匹配潜力评估 在智能视觉应用日益普及的今天&#xff0c;如何快速构建一个稳定、高效的目标检测系统&#xff0c;已经成为开发者面临的核心挑战之一。从自动标注到图文内容理解&#xff0c;再到多模态检索&#xff0c;目标检测不仅是基础能力&#xff0c;更是连接图像…

作者头像 李华
网站建设 2026/7/15 9:45:17

R语言可视化进阶指南:5个你必须掌握的数据探索技巧

第一章&#xff1a;R语言数据探索可视化的核心价值在数据分析流程中&#xff0c;数据探索可视化是理解数据结构、发现潜在模式和识别异常值的关键步骤。R语言凭借其强大的图形系统和丰富的可视化包&#xff08;如ggplot2、lattice、plotly等&#xff09;&#xff0c;成为数据科…

作者头像 李华
网站建设 2026/7/17 15:07:20

【R语言GPT代码调试终极指南】:9大高效技巧让你秒杀Bug

第一章&#xff1a;R语言GPT代码调试的核心挑战在将GPT模型集成到R语言环境中进行开发时&#xff0c;代码调试面临一系列独特挑战。这些挑战不仅源于R语言本身的动态特性和非标准求值机制&#xff0c;还涉及与外部API通信、数据类型转换以及上下文管理等复杂问题。动态作用域与…

作者头像 李华
网站建设 2026/7/17 15:16:16

YOLOv8日志收集:ELK栈集成方案

YOLOv8日志收集&#xff1a;ELK栈集成方案 在AI模型训练日益复杂的今天&#xff0c;开发者早已不再满足于“模型能跑就行”的初级阶段。尤其是在使用YOLOv8这类高效目标检测框架进行工业级项目开发时&#xff0c;一个常见的痛点浮现出来&#xff1a;当训练突然中断、损失函数异…

作者头像 李华
网站建设 2026/7/20 18:11:15

探秘智能水质检测公示屏

炎炎夏日&#xff0c;泳池是消暑健身的好去处。然而&#xff0c;畅游背后&#xff0c;池水是否真正洁净安全&#xff0c;曾经是管理者与游泳者共同的隐忧。传统的水质管理方式&#xff0c;正面临着多重挑战。传统水质管理的痛点过去&#xff0c;泳池水质监测多依赖人工定时取样…

作者头像 李华