gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 20:11:19 26 4
gpt4 key购买 nike

我不太确定我当前的程序出了什么问题,并且遇到了一些障碍:

(*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 = (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);

关于c - 尝试释放分配的内存后挂起程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41028880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com