
c++ 浅拷贝
的 append_task 函数实现 void append_task(T* task) { // 开辟内存,创建 T 类型的对象 T* t = (T*) calloc(1, sizeof(T)); // 拷贝 task 对象到新创建的内存块中 memcpy(t, task, sizeof(T)); 通过 calloc 函数开辟内存空间,这样新分配的内存块和原对象指针指向同一位置。 memcpy 是浅拷贝操作,它会将 task 对象的所有 data 成土拷贝到新分配的内存空间中。 new 对象 t 会引用原始对象 task 的内存空间。 最终 t 被添加到对应的队列中进行任务处理。
发布日期:2021-05-10 05:48:04
浏览次数:22
分类:精选文章
本文共 708 字,大约阅读时间需要 2 分钟。
threadpool
//T 是一个泛型类型,调用该函数时需要指定具体的类型,此时 T 就是以该类型运行的类型。
class t { public: template
// 将 t 添加到 it 对应的队列中(*it)->append_queue_task(t);
} };
t 的实现细节解释:
浅拷贝与深拷贝的区别:
-
浅拷贝( memcpy 样式) 仅复制目标对象所占内存的全部字节数。 优点:效率较高,不需要递归或复杂的循环。 缺点:如果应用场景需要每个对象保留完整的独立内存空间,则浅拷贝可能不足以满足需求。
-
深拷贝(手动实现) 将目标对象的内存拷贝到新分配的内存空间中,然后重置指针使其独立存在。 适用于以下场景:
- 对象包含指向其他对象的指针或有动态内存管理需求。
- 需要确保对象间完全独立,以防止意外修改导致的链式崩溃。
如果需要深拷贝,建议在构造函数或拷贝函数中手动实现深拷贝逻辑,以确保指针所指的数据独立存储。
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月24日 00时03分13秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Docker 拉取镜像速度太慢
2019-03-16
关于window匿名通道的使用以及所遇到的问题
2019-03-16
逆向工程初步160个crackme-------3
2019-03-16
初探MFC
2019-03-16
代码段段间跳转流程
2019-03-16
HUAWEI防火墙通过IKE方式协商IPSec隧道(采用预共享密钥认证)
2019-03-16
C语言自学笔记
2019-03-16
计网复习3
2019-03-16
JDK动态代理的实现原理
2019-03-16
Spring Security 架构与源码分析
2019-03-16
教程丨使用MeterSphere做Dubbo接口测试
2019-03-16
【毕设-STM32f103寄存器版本】智能防盗系统
2019-03-16
勒索病毒Kraken2.0.7分析
2019-03-16
MySQL错误1366处理方法
2019-03-16
pytorch深度学习中每个epoch运行时间的统计代码
2019-03-16
API->DeviceIOControl
2019-03-16
VxWorks 操作系统学习笔记
2019-03-16
链表插入和删除算法
2019-03-16