结构深度复制
Structure deep copy
这可能是一个非常基本的问题,但不知怎么的,它骗了我。。。当我编写测试代码时,它似乎可以工作,但在生产中出现了问题。
// Header file
#define length 100
typedef struct testStr_t {
int a;
char b;
char t1[length];
char t2[length];
} test;
void populateTest(test*);
// source file
test test1;
test test2;
populateTest(&test1);
test2 = test1;
test2
会是test1
的深度复制吗?还是这里有gotchas?用C编译器还是C++编译器编译代码有关系吗?
深度复制只受指针的阻碍,因此您的struct
将在C中正确复制。它在C++中也能工作,除非您定义自己的operator=
,不能正确复制。您只需要为具有指针的类型定义operator=
,因为指针的浅拷贝将复制指针,但共享数据。
我的答案与C++有关。我只能猜测它仍然适用于C.
这将是一个肤浅的复制品。
如果对象包含指针t1
和t2
,每个指针都包含一些间接的、动态分配的内存块的位置,则需要一个深度拷贝。
但是,对象包含实际数组时间的直接对象,所以您可以使用浅层复制。
(这有点误导,因为它可以工作,但您不能自己手动分配给数组对象!)
相关文章:
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- C++尝试深度复制唯一指针时出现内存访问冲突
- 在 c++ 中使用深度复制的运算符重载
- 如何深度复制链表对象指针
- 我有两棵二叉树.我想在不更改输入树的情况下深度复制两个二叉树的结果
- 如何将结构深度复制到向量的每个元素
- 我需要做一个深度复制,我是否正确使用了我的复制构造函数?
- 是否可以在不显式迭代每个元素的情况下深度复制指针容器?
- 如何深度复制unique_ptr向量
- 二叉搜索树 深度复制和取消引用
- 是否有 pybind11::array_t 的(深度)复制构造函数
- 链表的这个别名运算符是否会产生深度复制
- 有没有一种 stl 方法来执行指针向量的深度复制
- cv::P oint3f 赋值运算符是否执行"深度"复制?
- Qt:通过深度复制访问列表中的数据结构是否应该比通过指针访问它慢得多
- 深度复制包含引用成员(C++)的结构
- 如何将“char *”深度复制到std::stringstream
- 如何在双向链表上执行深度复制
- 在复制构造函数中执行深度复制
- 深度复制cv::垫子替代品,哪个更好?