acm题的一个runtime error的错误

这是原题http://poj.org/problem?id=1028我写的代码总是出现runtimeerror,可是觉得没有地方溢出,请问是为啥,附上代码#include... 这是原题http://poj.org/problem?id=1028
我写的代码总是出现runtime error,可是觉得没有地方溢出,请问是为啥,附上代码
#include<stdio.h>
#include<stdlib.h>

int main()
{
char *string[101];
char **p;
p=string;
int number=0,sum=0;
int i;
for(i=0;i<=100;i++)
{
string[i]=(char*)malloc(sizeof(char)*71);
}
string[0]="http://www.acm.org/";

while(true)
{
char guard[10];
scanf("%s",guard);
if(guard[0]=='V')
{
number=sum;
number++;
scanf("%s",string[number]);
printf("%s\n",string[number]);
p++;
sum++;
}
else if((guard[0]=='B')&&(sum>0))
{
--sum;
--p;
printf("%s\n",*p);
}
else if((guard[0]=='F')&&(sum<number))
{
++sum;
++p;
printf("%s\n",*p);
}
else if(guard[0]=='Q')
{
break;
}
else if((guard[0]=='B')&&(sum<1))
{
printf("Ignored\n");
}
else if((guard[0]=='F')&&(sum>=number))
{
printf("Ignored\n");
}
free(guard);
}
}
展开
 我来答
snoopylie
2012-06-01 · TA获得超过1275个赞
知道小有建树答主
回答量:2396
采纳率:33%
帮助的人:826万
展开全部
兄弟,你malloc出来才需要你去free
char guard[10]; 是局部变量字符数组 不是你malloc出来的
你最后还要 free(guard); 肯定会挂掉的
追问
额...我2了,谢谢哦
Slaverisk
2012-06-01
知道答主
回答量:46
采纳率:0%
帮助的人:11.2万
展开全部
将 free(guard);删去
我查了下MSDN中有
The free function deallocates a memory block (memblock) that was previously allocated by a call to calloc, malloc, or realloc.
即free只能释放用calloc, malloc, realloc等函数分配的内存空间!
char guard[10];
显然guard不是!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友26ad406
2012-06-01 · TA获得超过1611个赞
知道大有可为答主
回答量:1506
采纳率:100%
帮助的人:1082万
展开全部
最后free(guard)去掉
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mia☆jiancha☆ce6608
2012-06-01 · TA获得超过1526个赞
知道小有建树答主
回答量:713
采纳率:100%
帮助的人:495万
展开全部
free(guard);
这个错了
这是数组,你能free?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式