Дублирование структуры данных с помощью указателей - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь продублировать мою структуру данных, которая содержит указатель и целое число.Но я не уверен, что это правильный путь.

Вот моя структура:

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

1 Ответ

0 голосов
/ 04 октября 2018

Этот код копирует содержимое структуры, указанной на 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.

...