结构体指针多层嵌套结构体指针的深度拷贝

程序中有一个结构体指针,我想拷贝一份,建立一个新的结构体指针变量,并且分配内存。
可是结构体里面嵌套了多层结构体指针,这样分配内存好麻烦,一层一层的,也怕漏掉。
有没有什么好的办法进行这种结构体指针的深度拷贝?主要是嵌套太多层。
我的需求如下:

struct A {
int a;
double b;
struct B* c;
}
struct B{
double d;
struct C* e;
}

struct C{
char s;
}
struct D{
int h;
struct B* f;
}
我有一个已经分配过的struct D变量OLD,
现在我自己重新分配了空间生成了struct A变量NEW.想拷贝OLD的f所指向的内容给NEW的c。该如何实现?

4个回答

C还是C++,C++的话,写拷贝构造函数,然后自动递归调用,C没有什么好办法。

chuwen
chuwen 谢谢回复,是C,请问如果是C的话,该怎么实现?
3 年多之前 回复

一份好的结构体设计,是不会这样层层嵌套的。。调用太麻烦了。。。

谢谢回复,是C,请问如果是C的话,该怎么实现?

可以参考一下柔性数组的设计,struct B设计成如下,
struct B
{
double d;
char e[0];
}

为struct B申请空间时,大小为struct B 和struct C的size的和,然后将struct C的空间地址通过e来访问。使用的时候强制转换下,拷贝的时候就用struct B 和struct C的size的和的长度。。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问