我不太确定我目前的计划有什么问题,而且我已经达成了一些障碍:
(*ptr).Name = (char*)malloc(strlen(record+1));
strcpy((*ptr).Name, record);
free((*ptr).Name); //problem area
* ptr是一个指向具有各种字段的结构的指针。将一些数据复制到Name字段后,我想释放我分配的内存。当我单步执行我的程序时,我没有错误,而只是一个挂起的程序,在我尝试释放内存后不会继续。有任何想法吗?谢谢。
答案 0 :(得分:2)
(*ptr).Name = (char*)malloc(strlen(record+1)); //This is the problem!
strcpy((*ptr).Name, record);
free((*ptr).Name); //problem area //Better practice to use free(ptr->Name
修正:
ptr->Name = (char*)malloc(strlen(record)+1); //(record+1) in previouse code was doing
//the opposite of what it was intended to do
strcpy(ptr->Name, record);
free(ptr->Name);