C语言 追加到数组的末尾



我的目标是将列表附加到数组的末尾。当我尝试执行它时,给我分段错误。

我试图做一些调试,给我带来困境的结构在 for cicle:

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;

其中"dim"是一个全局变量,我用它来跟踪数组的维度

我知道这可能很容易做到,但我真的不知道如何解决这个问题。

感谢您的帮助

第一句话:

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));为什么演员表中的类型不是大小中的类型?

但真正的问题是,除了通过内存泄漏丢失内存之外,您还期望执行该任务吗?

必须删除该行。


TList列表的定义以及集合的类型是什么?


该行

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

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

array[dim-1] = set;

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

相关内容

  • 没有找到相关文章