我的目标是将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;
在“暗淡”的地方,这是一个用于跟踪数组尺寸的全局变量
我知道这可能很简单,但是我真的不知道如何解决这个问题。
感谢帮助
答案 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 *
的向量