【发布时间】:2015-05-06 00:52:00
【问题描述】:
假设我有一个
struct A{
char *name;
unsigned long *trunks;
bool value;
const struct smap *smap;
...
...
}
这个结构有所有类型的数据结构,除了结构 A A*,我没有直接接触过这个结构,它是一个指向它的指针。
【问题讨论】:
-
没有简单的方法。你必须自己写。
-
struct A A*没有意义。解释清楚,你有什么,你没有。在任何情况下,如果不深入了解数据的组织方式,就不可能进行深度复制。trunks是什么?指向单独的unsigned long的指针还是指向unsigned long数组的指针?如果后者是真的,那么数组有多长?是所有成员指针都应该被深度复制还是只复制其中的一部分? -
是的,所有成员都要深度复制。我的意思是结构 A *A。 *trunks 是指向位图数组的指针。该结构有更多字段,但我正在尝试为所有字段找到通用解决方案。很多字段是在其他地方定义的,我没有所有的访问权限。
-
我同意其他人的观点,即没有简单的方法。但是,如果这是您经常需要并且足够重要的东西,那么一种方法是编写一个 ELF 解析器来提取相关的结构信息并自动生成代码来进行复制。如果幸运的话,甚至可能已经有代码可以做到这一点。肯定有很多 ELF 解析器(例如 pyelftools),所以在最坏的情况下,您可以使用其中一个并添加到您的结构复制代码生成中。
-
知道了。你能告诉我如何复制结构指针和其他指针吗?