首页 > 解决方案 > Duplicating a data structure with pointers

问题描述

I'm trying to duplicate my data structure that contains a pointer and a integer. But I'm not sure if it is the right way to do so.

Here is my structure:

struct sample_t {
    int x; 
    void *y;   
};

Here is my function:

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;
}

标签: cpointersstructsizeof

解决方案


此代码复制指向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就够了。


推荐阅读