我的目标是将列表附加到数组的末尾。当我尝试执行它时,给我分段错误。
我试图做一些调试,给我带来困境的结构在 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;
因为数组是列表的向量,而不是列表的向量 *