c语言 malloc free问题

2025-04-24 13:59:08
推荐回答(2个)
回答1:

是这个地方出的错误:
membres[i] = strtok(chaine, "|");

这里members[i]是一个字符指针,在这句话之后,它指向了chaine中的一段,而不再指向之前malloc申请的内存空间了。
所以后来free的是chaine的内存空间,而不是之前malloc的。

所以这里应该用字符串的拷贝:
strcpy(members[i], strok(chaine, "|");

回答2:

molloc()函数只能返回分配空间的首地址,就算你用 char** 进行强制类型转换实质上也没有改变成地址的地址,所以第一次内存分配就失败了

你可以将membres作为一个指针数组,分别为每个数组元素分配空间