C 尝试释放已分配内存后挂起程序

C 尝试释放已分配内存后挂起程序,c,malloc,C,Malloc,我不太确定我目前的计划有什么问题,我遇到了一些障碍: (*ptr).Name = (char*)malloc(strlen(record+1)); strcpy((*ptr).Name, record); free((*ptr).Name); //problem area *ptr是指向具有各种字段的结构的指针。在我将一些数据复制到名称字段后,我想释放分配的内存。当我一步一步地执行我的程序时,我没有得到任何错误,而只是一个挂起的程序,在我尝试释放内存后,它将不会继续。有什么想法吗?多谢各位

我不太确定我目前的计划有什么问题,我遇到了一些障碍:

(*ptr).Name = (char*)malloc(strlen(record+1));
strcpy((*ptr).Name, record); 
free((*ptr).Name); //problem area
*ptr是指向具有各种字段的结构的指针。在我将一些数据复制到名称字段后,我想释放分配的内存。当我一步一步地执行我的程序时,我没有得到任何错误,而只是一个挂起的程序,在我尝试释放内存后,它将不会继续。有什么想法吗?多谢各位

(*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
通常写为
ptr->Name
哦,哇,我没有看到记录+1不正确,谢谢。
strlen(记录+1)
与预期的效果相反;)也就是说,再短一个。谢谢你,一切正常<代码>ptr->。名称应为<代码>ptr->名称
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);