gpt4 book ai didi

c - 在 C 中进行结构体深度复制的最简单方法是什么?

转载 作者:行者123 更新时间:2023-11-30 15:20:21 25 4
gpt4 key购买 nike

假设我有一个

struct A{
char *name;
unsigned long *trunks;
bool value;
const struct smap *smap;
...
...
}

该结构具有所有类型的数据结构,除了 struct A A* 之外,我没有直接接触该结构,它是指向它的指针。

最佳答案

您必须以相同的方式(递归地)将结构中的每个元素和所有引用的对象复制到新分配的结构中。

如果结构只有几个指针,您可以使用 memcpy 首先按原样复制所有元素,然后在第二遍中复制所有引用(通过指针)的对象。如果有很多指针,手动复制每个字段可能会更有效。

引用的对象必须被相同地对待(通过递归,迭代会非常讨厌)。然而,为此,您需要了解这些类型的结构。或者,在其实现文件中可能存在所有这些对象的复制函数,从而使它们保持不透明。如果结构体和复制函数都不可用,您就会有些迷失,因为没有它就无法检测指针。

如果存在循环引用就会出现问题。那么事情就会变得更加复杂。

关于c - 在 C 中进行结构体深度复制的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30065683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com