复制两个包含char数组的结构的标准方式是什么?复制C中包含char指针的两个结构
下面是一些代码:
#include stdio.h>
#include string.h>
#include stdlib.h>
typedef struct {
char* name;
char* surname;
} person;
int main(void){
person p1;
person p2;
p1.name = (char*)malloc(5);
p1.surname = (char*)malloc(5);
strcpy(p1.name, "AAAA");
strcpy(p1.surname, "BBBB");
memcpy(&p2, &p1, sizeof(person));
free(p1.name);
printf("%s\n", p2.name);
return 0;
}
线printf("%s\n", p2.name);
不打印的东西,因为我释放缓冲区。
我的结构的问题是它们比struct person
大。它们包含数百个char指针,我必须逐一复制每个成员。
是否有另一种方法来复制包含char数组的两个结构,而不使用每个成员的malloc
和strcpy
?
如果memcpy正在工作,如果内存未分配给p2,任何人都可以解释吗?它不应该在运行时抛出一些异常吗? – JagsVG 2015-03-29 16:30:49
你的结构包含*指针*,而不是*数组*。您的指针可能包含一个char数组的地址,但是您希望该数组被复制,您必须明确地进行管理。 – 2015-05-10 10:17:49