尝试释放分配的内存后挂程序

时间:2016-12-07 22:57:55

标签: c malloc

我不太确定我目前的计划有什么问题,而且我已经达成了一些障碍:

(*ptr).Name = (char*)malloc(strlen(record+1));
strcpy((*ptr).Name, record); 
free((*ptr).Name); //problem area

* ptr是一个指向具有各种字段的结构的指针。将一些数据复制到Name字段后,我想释放我分配的内存。当我单步执行我的程序时,我没有错误,而只是一个挂起的程序,在我尝试释放内存后不会继续。有任何想法吗?谢谢。

1 个答案:

答案 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);