结构深拷贝

| 这可能是一个非常基本的问题,但是却以某种方式使我受骗……当我编写测试代码时,它似乎可以工作,但是在生产中出现了问题。
// 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 ++编译器编译代码有关系吗?     
已邀请:
深度复制仅受指针的阻碍,因此您的
struct
将在C中正确复制。除非定义了自己的
operator=
,否则ѭ3将在C ++中也能正常复制。您只需为带有指针的类型定义“ 4”,因为指针的浅表副本将复制指针但共享数据。     
我的答案与C ++有关。我只能猜测它仍然适用于C语言。 这将是一个浅表副本。 如果对象包含指针
t1
t2
,每个指针都包含一些间接的,动态分配的内存块的位置,则需要深度复制。 但是,这些对象包含实际数组时间的直接对象,因此您可以使用浅表副本。 (这有点误导,但是您不能自己手动分配给数组对象!)     

要回复问题请先登录注册