结构深拷贝
|
这可能是一个非常基本的问题,但是却以某种方式使我受骗……当我编写测试代码时,它似乎可以工作,但是在生产中出现了问题。
// 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
的深层副本吗?还是这里有陷阱?用C编译器还是C ++编译器编译代码有关系吗?
没有找到相关结果
已邀请:
2 个回复
旗低饶彤
将在C中正确复制。除非定义了自己的
,否则ѭ3将在C ++中也能正常复制。您只需为带有指针的类型定义“ 4”,因为指针的浅表副本将复制指针但共享数据。
掏得透垦滩
和
,每个指针都包含一些间接的,动态分配的内存块的位置,则需要深度复制。 但是,这些对象包含实际数组时间的直接对象,因此您可以使用浅表副本。 (这有点误导,但是您不能自己手动分配给数组对象!)