【发布时间】:2019-09-14 06:57:57
【问题描述】:
我有三个Vector** 类型的数组:vectors、vectors_left 和vectors_right。我正在尝试从vectors 分配值,以便将其拆分为这两个数组。
Valgrind 表示 Invalid Write 位于 memcpy() 行。
我尝试了不同的组合删除& 并将* 添加到sizeof() 参数。
int count_left = count / 2;
int count_right = is_even(count) ? (count / 2) : (count / 2) + 1;
Vector** vectors_left = malloc(sizeof(Vector*) * count_left);
Vector** vectors_right = malloc(sizeof(Vector*) * count_right);
for (int u = 0; u < count; u++)
{
if (u < count_right - 1) {
memcpy(&vectors_left[u], &vectors[u], sizeof(Vector));
} else {
memcpy(&vectors_right[u - count_right + 1], &vectors[u], sizeof(Vector));
}
}
我的代码运行良好,但我遇到了这种泄漏。
【问题讨论】:
-
你没有为向量分配内存。
-
您为
vectors_left和vectors_right分配了内存,但您没有为它们指向的数组vectors_left[u]和vectors_right[u]分配任何内存。