我正在尝试这段代码:
imei=Found_imei(pClient->GetBuffer());
printf("6. CODICE IMEI %s \n",imei);
pClient->SetImei(imei);
printf("6.1 CODICE IMEI %s \n",pClient->GetImei());
free(imei); <<<<<<<<<<<<<<
printf("6.2 CODICE IMEI %s \n",pClient->GetImei());
在哪里
char *Found_imei(char *string)
{
char *start;
char *end;
char str[40];
int l;
start=strstr(string,"imei:");
strstr(start,",");
l=end-start-5;
strncpy(str,start+5,l);
str[l]='\0';
return strdup(str); <<<<<<<<<<<<<<<<<
}
free 命令后,printf 出错
我在使用 strdup 和 free 时出错了?
谢谢
最佳答案
我猜 htat GetImei
和 SetImei
是 char*
类型字段的薄包装器。如果是这种情况,则 free
调用将释放支持 char*
值的内存。因此,在 free 之后调用 GetImei
正在访问已释放的内存,因此具有未定义的行为
关于c++ - strdup 和免费使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20059624/