c语言 malloc free问题
voidmain(){char**membres;membres=(char**)malloc(3*sizeof(char*));for(inti=0;i<3;i++){...
void main(){
char ** membres;
membres = (char**)malloc(3*sizeof(char*));
for (int i = 0; i<3; i++) {
membres[i] = (char*)malloc(32 * sizeof(char));
}
for (int i = 0; i < 3; i++) {
if (i == 0) {
membres[i] = strtok(chaine, "|");
}else{
membres[i] = strtok(NULL, "|");
}
}
.......................
for (int i =0; i<3; i++) {
free(membres[i]); //出错地方
membres[i] = 0;
}
free(membres);
membres = 0;
}
请问下 为什么这样释放 是有错误的,错误的大概意思是 释放了一个没有分配空间的指针(在代码中注释出来了),可是我明明就给他开空间了啊?请大神给解答个呗,貌似是因为我用了strtok这个函数? 展开
char ** membres;
membres = (char**)malloc(3*sizeof(char*));
for (int i = 0; i<3; i++) {
membres[i] = (char*)malloc(32 * sizeof(char));
}
for (int i = 0; i < 3; i++) {
if (i == 0) {
membres[i] = strtok(chaine, "|");
}else{
membres[i] = strtok(NULL, "|");
}
}
.......................
for (int i =0; i<3; i++) {
free(membres[i]); //出错地方
membres[i] = 0;
}
free(membres);
membres = 0;
}
请问下 为什么这样释放 是有错误的,错误的大概意思是 释放了一个没有分配空间的指针(在代码中注释出来了),可是我明明就给他开空间了啊?请大神给解答个呗,貌似是因为我用了strtok这个函数? 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询