Во-первых, у вас есть Particle *p
, который вы можете выделить как отдельную частицу или массив частиц.
Вы выделяете * p как массив во второй строке, поэтому вы НЕ должны выделять ихснова внутри цикла for, ЕСЛИ вы не используете Particle **p
, а затем выделяете * (p) в качестве массива указателей на Particle, затем вы размещаете каждую частицу внутри цикла for.Я не рекомендую.
Как упоминалось выше, удалить объявление указателя из структур.
И, после этого, вам не нужно перераспределять каждую частицу (так как p являетсяобычный указатель), вы должны освободить его только с free(sys->p);
, потому что вы выделяете каждую отдельную частицу как прямое место в памяти, а не как указатели, как я уже сказал.
Надеюсь, это поможет:)