追加到数组的末尾

时间:2019-01-03 12:43:30

标签: c arrays list segmentation-fault append

我的目标是将List附加到数组的末尾。当我尝试执行它给我分割错误。

我尝试进行一些调试,并且给我个难题的指令已列在第条中:

array[i] = tmp[i];

这是我的代码:

int i;
List *tmp = array;

array = (List *)malloc((dim+1) * sizeof(List));

for (i = 0; i < dim; i++) {
    array[i] = tmp[i];
}

dim++;

array[dim-1] = (List)malloc(sizeof(struct TList));
memcpy(array[dim-1], set, sizeof(struct TList));

return array;

在“暗淡”的地方,这是一个用于跟踪数组尺寸的全局变量

我知道这可能很简单,但是我真的不知道如何解决这个问题。

感谢帮助

1 个答案:

答案 0 :(得分:0)

第一句话:

int i;
List *tmp = array;

array = (List*)malloc((dim+1) * sizeof(List));

for (i = 0;i < dim;i++){

  array[i] = tmp[i];

}

可以就是这样:

array = realloc(array, (dim+1) * sizeof(List));

array[dim-1] = (List)malloc(sizeof(struct TList));中,为什么强制类型转换也不是 sizeof 类型?

但是真正的问题是,除了通过内存泄漏导致内存丢失之外,您希望进行该分配吗?

该行必须删除。


TList list 的定义和 set 的类型是什么?


memcpy(array[dim-1], set, sizeof(struct TList));

是错误的,必须为( set 必须为列表)

array[dim-1] = set;

因为数组是 List 的向量,而不是 List *

的向量