BENULL
2016-07-01 12:50
采纳率: 50%
浏览 2.3k
已采纳

xC0000005: 读取位置 0xfeeefef6 时发生访问冲突

在dev c++上可以正常运行,到了vs2010就报错,怀疑是链表中内存分配出了问题但是找不到,求助
#include
using namespace std;
typedef struct people
{
int num;
int data;
struct people* next;
}people,*Linklist;
void InitList (Linklist &L)
{
L=new people;
L->next=L;
}
int creat(Linklist &L)
{ int data,num=1;
Linklist r=L,p=L;
cout<<"请依次输入密码(输入-1结束):"< cin>>data;
while(data!=-1)
{
p->num=num++;
p->data=data;
p->next=L;
r->next=p;
r=p;
p=new people;
cin>>data;

}
return num-1;
}
Linklist _delete(Linklist &L,int num)
{
Linklist p=L,q=L,Q=L;
int data;
while(p->num!=num)
{
q=p;
p=p->next;
}

if(p->num==num&&p==L)
{
while(Q->next!=L)
Q=Q->next;
Q->next=p->next;
delete p;
}
else
{
q->next=p->next;
delete p;
}
return q->next;
}
int main()
{
int start,i,j=0,len;
Linklist L,p;
InitList(L);
len=creat(L);
cout<<"请输入开始数:";
cin>>start;
p=L;
for(j=0;j {
for(int i=0;i {
p=p->next;
}
start=p->data;
cout<num<<" ";
p=_delete(L,p->num);

}

return 0;
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 小灸舞 2016-07-02 00:43
    已采纳

    代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
    提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
    单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

    点赞 打赏 评论
  • Robot-S 2016-07-01 12:51

    0xC0000005:  读取位置 0xFEEEFEEE 时发生访问冲突。说明指针所指向的空间已经被释放......
    答案就在这里:0xC0000005: 读取位置 0xFEEEFEEE 时发生访问冲突
    ----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

    点赞 打赏 评论
  • devmiao 2016-07-01 21:33

    单步执行,看出错的行,仔细检查该行的指针变量

    点赞 打赏 评论

相关推荐 更多相似问题