for (i = 0; i < len1; i++){
array3[i] = array1[i];
}
for (i = 0; i < len2; i++){
array3[i + len1] = array2[i];
}
问题出在AddArray函数的这段代码。
这里你分配了array[i]的内存之后,却将指针进行了赋值,将3的成员地址指向了原来1、2的地址,也就是常量地址,因此free会报错。
正确解决办法,将以上我复制的代码中,赋值语句改为内存拷贝语句strcpy或者memcpy,比如:
memmove(array3[i + len1] , array2[i],strlen(array2[i]));
光有不为NULL还不行,常常是因为某个i的那个指针所指数组越界造成的。