首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为什么 Runtime Error (ACCESS_VIOLATION) 大牛看一下呗解决方法

2012-04-28 
为什么 Runtime Error (ACCESS_VIOLATION) 大牛看一下呗题目是 hdu1054:代码:C/C++ code#include iostrea

为什么 Runtime Error (ACCESS_VIOLATION) 大牛看一下呗
题目是 hdu 1054 :
代码:

C/C++ code
#include <iostream>#include <cstring>#include<cstdio>#define N 1505using namespace std;  //定义链表struct link{   int data; //存放数据   link* next; //指向下一个节点   link(int=0);};link::link(int n){   data=n;   next=NULL;}int result[N]; //记录n1中的点匹配的点的编号bool state [N]; //记录n1中的每个点是否被搜索过link *head [N]; //记录n2中的点的邻接节点link *last [N]; //邻接表的终止位置记录//判断能否找到从节点n开始的增广路bool find(const int n){    link* t=head[n];    while (t!=NULL) //n仍有未查找的邻接节点时    {       if (!(state[t->data])) //如果邻接点t->data未被查找过       {          state[t->data]=true; //标记t->data为已经被找过          if ((result[t->data]==-1) || //如果t->data不属于前一个匹配M          (find(result[t->data]))) //如果t->data匹配到的节点可以寻找到增广路          {           result[t->data]=n;  //那么可以更新匹配M',其中n1中的点t->data匹配n           return true;  //返回匹配成功的标志          }       }       t=t->next; //继续查找下一个n的邻接节点     }     return false;}int flag[N];int main(){   int n,m;   while(scanf("%d",&n)==1)   {     memset(flag,0,sizeof(flag));     memset(result,-1,sizeof(result));     for (int i=0; i < n; i++)     {     int t1=0, t2=0;     scanf("%d:(%d)",&t1,&m);     if(flag[t1]==0)     {     while(m--)     {       scanf("%d",&t2);       flag[t2]=1;       if (last[t1]==NULL)       last[t1]=head[t1]=new link(t2);       else       last[t1]=last[t1]->next=new link(t2);     }     }     else     {         while(m--)         {         scanf("%d",&t2);         if (last[t1]==NULL)         last[t2]=head[t2]=new link(t1);         else         last[t2]=last[t2]->next=new link(t1);         }     }   }   int ans=0;   for (int i=0; i<n; i++)   {      memset(state, 0, sizeof(state));      if (find(i)) ans++;    }    cout<<ans<<endl;   }    return 0;}


[解决办法]
没有细看代码,看错误知道是内存访问的事儿,楼主调试一下
scanf("%d:(%d)",&t1,&m); 楼主这个代码不太合适,不能让别人输入:还要输入()吧?
[解决办法]
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。

[解决办法]
楼主输入的是什么
gcc4.2表示测试了一组数据没问题

热点排行