首页 > 电脑

有未经处理的异常:0xC0000005:读取位置0x00000000时发生访问冲突

更新时间2018-05-04 10:33:16

源代码如下

#include<iostream>

#include<stdlib.h>

using namespace std;

 

struct node{

int data;

node *next;

};

 

node *p=NULL;

 

void ins(int x)  //将输入的数采用头插法放入链表中

{

node *q=new node;

q->data=x;

q->next=p;

p=q;

}

 

void rev(int i)  //将链表逆置并输出

{

node *m;    //因为用了头插法放入数据所以输出的应与输入的相同

int x;

m=p;

p=NULL;

int j;

   while(m!=NULL)

{

node *n=m->next;

p=m;

m=n;

}

cout<<"逆置链表后的结果:";

for(j=0;j<i;j++)

{

x=p->data;   有未经处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突//提示这是下一条要执行的语句,不知道在之前哪里出了错

cout<<x;

p=p->next;

}

 

}

 

void main()

{

int i;

int a[6];

cout<<"请输入6个数: ";

for(i=0;i<6;i++)

cin>>a[i];

for(i=0;i<6;i++)

ins(a[i]);

rev(i);

system("pause");

return;

}


遇见这种问题一般都是空指针,即:指针里没有赋值~

如果你对null 进行操作就会产生空指针异常

 

Object obj = new Object();

 

你要知道 obj是一个Object指针变量,指向Object类的一个实例

 

我们说obj是一个对象 实质是它指向一个对象的首地址 

 

如果这个指针变量obj 没有指向任何空间 你调用它的方法和属性就会出错

 

例如 Object obj = new Object();

 

     obj.equals("123");这个是没错的

 

但换下面语句 Object obj = null;

 

     obj.equals("123");就会出现空指针异常

未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突

     在使用的过程中,出现了标题中的错误,首先在网上搜了一些方法,费了好大的劲,终于解决了,

关于0xC0000005问题:

0xC0000005: Access Violation错误调试- -

1》数据越界或是定义的指针未释放.

2》空的指针的可能性最大。使用指针前最好能显式的赋值! 

应该是指针的问题

3》内存访问错误,检查指针,是否为空,是否越界

可能性 3 种 

1: 

char *p; 

p = new char[number]; 

delete [] p; 

.... 

// always using p.... 

p = xxx; // access violation 

 

2: 

char *p; 

memcpy(p, xxx, number); // access violation 

 

3: 

char *p; 

p = new char[number]; 

delete [] p; 

......... 

delete [] p; // access violation


上一篇:EXCEL如何自动统计和值

下一篇:请问先学习易语言对学习java和c语言有帮助吗?