我正在尝试复制包含指针和整数的数据结构。但是我不确定这样做是否正确。
这是我的结构:
struct sample_t {
int x;
void *y;
};
这是我的功能:
struct sample_t *dup(struct sample_t *sample){
struct sample_t *dup_sample = malloc(sizeof (sample));
dup_sample->x = sample->x;
dup_sample->y = malloc(sizeof(sample->y));
dup_sample->y = sample->y
return dup_sample;
}
答案 0 :(得分:2)
此代码将指向sample
的结构的内容复制到新分配的结构:
struct sample_t *dup(struct sample_t *sample) {
struct sample_t *dup_sample = malloc(sizeof *sample);
*dup_sample = *sample;
return dup_sample;
}
请注意,您分配的内存必须具有足够的数据空间,并且必须具有*sample
(结构)的大小,而不是sample
(地址)的大小。
对于副本,仅凭struct1 = struct2
就足够了。