【发布时间】:2015-05-01 15:10:14
【问题描述】:
我的 C 程序中有以下结构
struct person {
char key[50];
char color[20];
int age;
};
我想制作这个结构的深层副本。我已经设置了深拷贝功能,但是我对如何深拷贝字符串有点困惑。我听说有人使用strcpy,其他人使用strdup。
我希望在我的程序中,如果原始人被释放,深度复制的人的键和颜色不会受到影响。一旦设置,键和颜色不能改变。就我而言,我应该使用strcpy 还是strdup 函数?
【问题讨论】:
-
由于发布的结构中没有 'char *' 字段,因此除了 memcpy(destStruct, srcStruct, sizeof destStruct);
-
因为数组(不仅仅是指向它们的指针!)是结构的成员,所以浅拷贝就是深拷贝。没有间接性。您的结构的内存占用 > 70 字节,在堆栈上,在堆上,在任何你想要的地方。