社区
C++ 语言
帖子详情
关于结构体深拷贝和浅拷贝的问题
yihangdaimadoubuhui
2017-12-23 01:28:56
查了百度说是前拷贝只靠了指针的地址,没有拷贝内容。但是地址不是内存地址吗?按理来说找到地址就能顺着找到内容啊。我是萌新不太懂,还望大神们指点。
...全文
355
6
打赏
收藏
关于结构体深拷贝和浅拷贝的问题
查了百度说是前拷贝只靠了指针的地址,没有拷贝内容。但是地址不是内存地址吗?按理来说找到地址就能顺着找到内容啊。我是萌新不太懂,还望大神们指点。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
陪妳看星星
2017-12-26
打赏
举报
回复
复习浅拷贝与深拷贝
啊哈moment
2017-12-25
打赏
举报
回复
受教了 fighting
真相重于对错
2017-12-25
打赏
举报
回复
举个例子 typedef struct A{ int* ddd; }*PA; PA sa1,sa2; 。。。。 sa1->ddd=(PA)malloc(sizeof(int)); memcpy(sa1,sa2,sizeof(struct A));这就是浅拷贝。 如果 下一步 free(sa1->ddd); sa2 的ddd也就失效了
haierpro
2017-12-25
打赏
举报
回复
不是找不找得到内容的问题,是想不想做拷贝,或有没有去找到内容做拷贝的问题。
heronism
2017-12-25
打赏
举报
回复
类(结构体)有指针成员时,深拷贝时要为被赋值的变量里的指针成员申请空间并进行值拷贝,这样两个变量都是独立的。 浅拷贝时只拷贝指针的值,如果源变量被释放了目的变量里的指针就成野指针了,当然如果你能控制源变量被释放后目的变量不会再用到也可以 可以了解下智能指针
starytx
2017-12-23
打赏
举报
回复
你只拿一份地址,如果对象都不存在了,你拿的地址就是野指针了。
C/C++
浅拷贝
和
深拷贝
的实例详解
C/C++
浅拷贝
和
深拷贝
的实例详解
深拷贝
是指拷贝对象的具体内容,而内存地址是自主分配的,拷贝结束之后,两个对象虽然存的值是相同的,但是内存地址不一样,两个对象也互不影响,互不干涉。
浅拷贝
就是对内存地址的复制,让目标对象指针和源对象指向同一片内存空间.
浅拷贝
只是对对象的简单拷贝,让几个对象共用一片内存,当内存销毁的时候,指向这片内存的几个指针需要重新定义才可以使用,要不然会成为野指针。 在iOS开发中也会涉及到
浅拷贝
和
深拷贝
,简而言之:
浅拷贝
:拷贝指针变量的值
深拷贝
:拷贝指针所指向内存空间 不过这次我们通过C语言来实现: //声明一个
结构体
typedef struct P
protobuf-master-3.19.4.zip
使用protobuf源码编译安装linux版本以及arm版本protobuf库 protobuf是google开发的一个序列化和反序列化的库,通过.proto文件定义文件格式,序列化后的数据是binary的,可以在多语言上使用.一般情况下,若客户端和服务端都是自己做的,用protobuf作为通讯协议,无疑是一个不错的选择. protobuf是一种用于对结构数据进行序列化的工具,从而实现数据存储和交换。主要用于网络通信中收发两端进行数据交互。所谓的数据结构是指类似于struct
结构体
数据,可用于表示一个网络消息。当
结构体
中存在函数指针类型是,直接对其存储或传输相当于
浅拷贝
,而对其进行序列化后相当于
深拷贝
。
c++面试题基础分享.doc
c++面试题53个
问题
1.C++的三大特性 2.C和C++的区别 3.全局变量和局部变量在内存分配上有何不同 4.static的作用 5.const解释其作用 6.指针和引用的区别 7.智能指针 8.简述
深拷贝
和
浅拷贝
的区别 9.编写my_strcpy函数,实现与库函数strcpy类似的功能,不能使用任何库函数 10.请讲述堆和栈的区别 11.全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的 12.new、delete、malloc、free之间的关系 13. 头文件种的ifndef/define/endif 是干什么用的 14.TCP和UDP有什么区别 15.STL库用过吗?常见的STL容器有哪些?算法用过哪几个 16.同步IO和异步IO的区别 17.说下你对内存的了解 18.C++文件编译与执行的四个阶段 19.extern关键字的作用 20.#define和const的区别 21.
结构体
struct和共同体union(联合)的区别 22.C++中vector和list的区别 23.
结构体
和类的区别 24.STL中map和set的原理(关联式容器) 25.MFC的消息机制 26.消息映射 27.列举几种进程的同步机制,并比较其优缺点 28.数组和链表的区别 29.MFC主要要用到哪几个类?及其各个类的作用 30.MFC六大核心机制 31.OnDraw和OnPaint 32.win32程序的消息响应机制是如何实现的 33.MFC中的消息响应机制是如何实现的 34.WM_COMMAND命令消息处理顺序 35.MFC序列化的概念 36.PeekMessage和GetMessage的主要区别 37.WIN32创建窗口程序基本函数 38.Windows中的系统消息循环占用CPU的疑问 39.队列消息与非队列消息 40.GDI对象绘图步骤 41.设备上下文DC 42.GDI位图绘制步骤 43.当模态对话框点开后,主窗口还能响应处理消息吗 44.MFC的消息分类 45.CListCtrl 虚拟列表技术 46.虚函数是怎么实现的 47.什么是内存泄漏?面对内存泄漏和指针越界,你有哪些方法? 48.变量的声明和定义有什么区别 49.sizeof是一个操作符,strlen是库函数 50.写一个“标准”宏MIN 51.简述strcpy sprintf与mencpy的区别 52.链表与数组的区别 53.简述队列和栈的异同
IOS ObjectiveC中的赋值与对象拷贝
IOS ObjectiveC中的赋值与对象拷贝 在开发过程中我们经常会遇到对象拷贝的
问题
,下面我们分别讨论赋值操作、对象拷贝、以及
浅拷贝
(Shallow copy)与
深拷贝
(Deep copy)的区别与各自的实现方式。 一、不同对象的赋值操作 Objective-C中有两类对象,一类是
结构体
(或者基本数据类型也算),另一类是NSObject对象。 对于
结构体
,代码直接会操作其实体,因此赋值操作会创建一个源对象的副本(一个新的对象);而对于NSObject对象,必须使用指针来操作对象,所以其赋值操作相当于复制了指针,而非对象,也就是说赋值操作使得源指针和新指针都指向同一个NSObject对象。
leetcode分类-leetcodePlan:刷题记录
leetcode 分类 leetcodePlan 记录 1. java中的数据类型和c语言的有什么区别 a. j有基本数据类型、引用数据类型、常量有const修饰 b. c有基本数据类型、枚举类型、空类型、派生类(指针类型、数组类型、
结构体
类型、共用体类型、函数类型),常量是#define去定义 c. j中的char是两个字节,这个是对应Unicode;在c中是一个字节 对应ASCII码 d. java是可以支持跨平台,但是c是面向过程的语言,执行效率高,不支持跨平台。 2. java和c的编译上的区别 a. java是先将编码转换成字节码文件,再通过JVM转换为二进制码,再执行输出 b. c是直接将编码转换为二进制码,再由计算机去识别输出 3. java和c的内存管理区别 a. 在java有自动回收内存的机制,不用考虑内存的使用情况,用完就不用理,会自动回收,但是也不是所有的都被回收 b. 在c中的话,要直接malloc和直接去free,也就是有借有还,在使用一些数组等场景中,你得去先分配好内存后,才可以去使用。在使用完后要去释放才可以 4.
深拷贝
和浅
C++ 语言
64,676
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章