Вам нужно выделить память для векторов, в которые вы копируете.
Вы также не должны брать адрес vectors_left[u]
. vectors_left
- это массив указателей, поэтому vectors_left[u]
- это указатель.
for (int u = 0; u < count; u++)
{
if (u < count_right - 1) {
vectors_left[u] = malloc(sizeof(Vector));
memcpy(vectors_left[u], &vectors[u], sizeof(Vector));
} else {
vectors_right[u - count_right + 1] = malloc(sizeof(Vector));
memcpy(vectors_right[u - count_right + 1], &vectors[u], sizeof(Vector));
}
}
Не видя декларации vectors
, я не знаю, является ли &vectors[u]
правильным или неправильным.
Я бы тоже не делал это в виде цикла с оператором if
, я бы делал это в виде двух циклов, поскольку между этими двумя случаями нет совпадений.
for (int u = 0; u < count_right - 1; u++) {
vectors_left[u] = malloc(sizeof(Vector));
memcpy(vectors_left[u], &vectors[u], sizeof(Vector));
}
for (int u = count_right - 1; u < count; u++) {
vectors_right[u - count_right + 1] = malloc(sizeof(Vector));
memcpy(vectors_right[u - count_right + 1], &vectors[u], sizeof(Vector));
}