69,371
社区成员
发帖
与我相关
我的任务
分享
{
unsigned char *para;
unsigned char *follow;
}fname[argc_num];
for(idx=0;idx<argc_num;idx++)
{
fname[idx].para=malloc(sizeof(char)*(buf_len1-8-argc_num1) +1);//
fname[idx].follow=malloc(sizeof(char)*argc_num1 +1);
}
for(idx=0;idx<argc_num;idx++)
{
free(fname[idx].para);
fname[idx].para=NULL;
memset(fname[idx].para,'\0',sizeof(char)*(buf_len1-8-argc_num1) +1);
free(fname[idx].follow);
fname[idx].follow=NULL;
memset(fname[idx].follow,'\0',sizeof(char)*argc_num1 +1);
}
for(idx=0;idx<argc_num;idx++)
{
printf("fname[%d].para=%s\n",idx,fname[idx].para);//清空之前的打印
memset(fname[idx].para,'\0',sizeof(char)*(buf_len1-8-argc_num1) +1);
fname[idx].para=NULL;
printf("fname[%d].para=%s\n",idx,fname[idx].para);//清空之后的打印
free(fname[idx].para);
free(fname[idx].para);
printf("fname[%d].para=%s\n",idx,fname[idx].para);//free之后的打印
printf("fname[%d].follow=%s\n",idx,fname[idx].follow);//清空之前的打印
memset(fname[idx].follow,'\0',sizeof(char)*argc_num1 +1);
fname[idx].follow=NULL;
printf("fname[%d].follow=%s\n",idx,fname[idx].follow);//清空之后的打印
free(fname[idx].follow);
free(fname[idx].follow);
printf("fname[%d].follow=%s\n",idx,fname[idx].follow);//free之后的打印
}
memset(fname[idx].para,'\0',sizeof(char)*(buf_len1-8-argc_num1) +1);
fname[idx].para=NULL;
free(fname[idx].para);
free了还memset,这叫做内存非法操作,越界访问.
int idx;
for(idx=0;idx<argc_num;idx++)
{
fname[idx].para=(unsigned char*)malloc(sizeof(char)*(buf_len1-8-argc_num1) +1);
fname[idx].follow=(unsigned char*)malloc(sizeof(char)*argc_num1 +1);
}
for(idx=0;idx<argc_num;idx++)
{
free(fname[idx].para);
free(fname[idx].follow);
}