【发布时间】:2014-11-30 14:08:32
【问题描述】:
在 C 中复制结构的变量(具有指向某个变量的指针,例如浮点数和普通变量整数)。不是浅拷贝或深拷贝。但复制到一个指向完全相同内存的变量中。
考虑这段代码:
typedef struct {
char *name;
int value;
} Node;
void main()
{
Node n1, n2, n3;
char name[] = "This is the name";
n1 = (Node){ name, 1337 };
// HERE n2 and n1 will contain name pointing to same memory location
// But for value, they will have different memory location
n2 = n1;
// Here n1 and n3 are referring to different memory locations for both name and value
n3.value = n1.value;
n3.name = strdup(n1.name);
}
但我想要一些副本,它指向名称和值的相同内存位置。
在 C 或等效的 Java 代码或 C++ 中是否有方法? 如果是其他语言,请举出你自己的例子。
【问题讨论】:
-
如果你想要一些 points 指向某个内存的东西,请使用 pointer :-)
-
你必须进行要么浅拷贝或深拷贝,你不能什么都不做(那么你实际上并没有拷贝任何东西)。如果你只是复制指针(即
pointer1 = pointer2),那么你就有了浅拷贝。现在,通过您的strdup电话,您可以进行深度复制。如果您只是创建一个指针或对另一个结构的引用,那么您实际上根本不是在复制。 -
您使用的是什么语言?您为该问题标记的三种语言是不同且独立的,并且在复制时具有不同的概念。
-
@JoachimPileborg 是的,你是对的。我了解这 3 种语言,因此我只欢迎基于这 3 种语言的回复。
标签: java c++ c pointers memory