求助!关于C++引发异常:读取访问权限冲突的问题

uestc-Kei 2017-12-15 05:56:53
引发了异常: 读取访问权限冲突。
**this** 是 0xCCCCCCCC。 这是VS2017上调试显示的错误类型。
#include<iostream>
#include<string.h>
using namespace std;
class List {
public:
class Node {
private:
int data;
public:
void setdata(int x) {
data = x;
}
int getdata(void) {
int i = data;
return i;
}
Node(void) {

}
Node(int x) {
data = x;
}
Node *next = NULL;
Node *pre = NULL;
};
List(void);
~List(void);
List(const List&s);
Node* first=new Node;
Node* last=new Node;
/*在开头插入结点*/
void insertNode(int x) {
Node p;
p.setdata(x);
first->pre = &p;
p.next = first;
first =&p;
}
/*删除结点*/
void deleteNode(int x) {
Node *p=first;
if (first != NULL) {
if (x == first->getdata()) {
first = first->next;
first->pre = NULL;
delete p;
p = NULL;
}
else
for (; p != NULL; p = p->next) {
if (x == p->next->getdata()) {
Node *q = new Node;
q = p->next;
p->next = q->next;
q->next->pre = p;
delete q;
q = NULL;
break;
}
}
}
else {
cout << "链表为空" << endl;
}
}
/*查找结点*/
Node* selectNode(int x) {
Node* p = first;
if (first != NULL) {
for (; x != p->getdata(); p = p->next) {
if (p->next == NULL) {
cout << "无所查询结点" << endl;
return NULL;
}
}
return p;
}
else {
cout << "链表为空" << endl;
return p;
}
}

};
List::List(void) {
Node k(0);
first = &k;
last = &k;
}
List::~List(void) {
for (; first != NULL; ) {
Node *p = first;
first = first->next;
delete p;
}
cout << "链表已删除" << endl;
}
List::List(const List &s) {
first->setdata(s.first->getdata());
Node* p = s.first;
Node* q = first;
while (p->next) {
p = p->next;
Node c(p->getdata());
c.pre = q;
q->next = &c;
q = q->next;
}
last = q;
}
int main(void) {
List a;
a.insertNode(5);
cout << a.selectNode(5) << endl;
system("pause");
return 0;
}
这是代码。
我想要求助的是 为什么会出现这种异常类型?(这种异常类型是因为什么原理出现的) 为什么在 return i;语句中反馈这种异常?
希望

试了试在int data;时直接将data初始化为0,但是结果并没有任何改变。
...全文
8690 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
CyberLogix 2019-10-13
  • 打赏
  • 举报
回复
没有给指针分配内存啊,呵呵
提及 2019-10-13
  • 打赏
  • 举报
回复
引用 5 楼 程序猿在哈尔滨 的回复:
引用 8 楼 code杰先森 的回复:
烫 * 0xCCCCCCCC : Used by Microsoft's C++ debugging runtime library to mark uninitialised stack memory 未初始化的堆栈内存 有的时候的确看不懂发的什么,但至少在这不该被说
code杰先森 2019-10-13
  • 打赏
  • 举报
回复
引用 5 楼 程序猿在哈尔滨 的回复:
赵四老师的回答,从来都是驴唇不对马嘴,不管啥问题,都能复制一大堆的东西过来拼凑,怪不得积分那么高
我也很烦这个,都是长篇大论,跟人家的问题没直接关系
CT8100 2019-01-28
  • 打赏
  • 举报
回复
引用 5 楼 程序猿在哈尔滨 的回复:
赵四老师的回答,从来都是驴唇不对马嘴,不管啥问题,都能复制一大堆的东西过来拼凑,怪不得积分那么高

  • 打赏
  • 举报
回复
赵四老师的回答,从来都是驴唇不对马嘴,不管啥问题,都能复制一大堆的东西过来拼凑,怪不得积分那么高
赵4老师 2017-12-17
  • 打赏
  • 举报
回复
windows里常见的内存填充数据含义  * 0xABABABAB : Used by Microsoft's HeapAlloc() to mark "no man's land" guard bytes after allocated heap memory 漱 * 0xABADCAFE : A startup to this value to initialize all free memory to catch errant pointers 涵? * 0xBAADF00D : Used by Microsoft's LocalAlloc(LMEM_FIXED) to mark uninitialised allocated heap memory 很? * 0xBADCAB1E : Error Code returned to the Microsoft eVC debugger when connection is severed to the debugger 撅饰 * 0xBEEFCACE : Used by Microsoft .NET as a magic number in resource files 烫烫 * 0xCCCCCCCC : Used by Microsoft's C++ debugging runtime library to mark uninitialised stack memory 屯屯 * 0xCDCDCDCD : Used by Microsoft's C++ debugging runtime library to mark uninitialised heap memory 葺葺 * 0xDDDDDDDD : Used by Microsoft's free() or delete to mark freed heap memory 蕲蕲 * 0xDEADDEAD : A Microsoft Windows STOP Error code used when the user manually initiates the crash  * 0xFDFDFDFD : Used by Microsoft's C++ debugging heap to mark "no man's land" guard bytes before and after allocated heap memory  * 0xFEEEFEEE : Used by Microsoft's HeapFree() to mark freed heap memory 崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
uestc-Kei 2017-12-17
  • 打赏
  • 举报
回复
1楼说的对
引用 1 楼 adlay 的回复:
0XCCCCCCCC 就是指针未初始化, 这里是 Node 的指针没初始化到
走好每一步 2017-12-15
  • 打赏
  • 举报
回复
void insertNode(int x) { Node p; p.setdata(x); first->pre = &p; p.next = first; first =&p; } Node p应更改为Note *p = new Note;
www_adintr_com 2017-12-15
  • 打赏
  • 举报
回复
0XCCCCCCCC 就是指针未初始化, 这里是 Node 的指针没初始化到
=劫=机=岁=月=

64,678

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧