读取访问权限冲突。0xCDCDCD

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cai18381306175/article/details/78853562


已经一年多没有用C++了,最近厌倦了写一些垃圾App,想学一下游戏开发,于是开始复习下C。

今天在复习数据结构的链表部分时,出现了这样的一个错误:



折腾了半天,终于找到了原因,下面是链表数据结构:

typedef struct List {
     List *next;
     // 表的下标
     int i;
     // 总和结果
     int sum;
}List;


下面是我的新增节点部分代码和出错部分代码:

// 将计算结果存下来
p3->next = (struct List *)malloc(sizeof(List));
p3 = p3->next;
p3->i = i;
p3->sum = total;
i++;

while (p2 != nullptr)
{
     if (total - p2->sum == 400)
     // 代码部分省略
     p2 = p2->next;
}


相信老司机一眼就能看出来,是新增节点时出的错,p3应该在分配内存时加一句

p3->next = nullptr; (nullptr为C++11标准,等于NULL)

这样就没有任何问题了,原因是,如果定义了一个指针变量而没有初始化,指针将指向一个不确定的值,这时如果对指针进行操作就会报错。

引用某大牛的话,C++是一个高冷的女神,一旦你征服了她,抛开她的外衣,也不过如此。希望持之以恒,与各位初学者共勉。



阅读更多
换一批

链表发生读取访问权限冲突

05-16

刚开始学链表,写了一个非递减单链表。但是出错了,po个出错图吧rn[img=http://img.bbs.csdn.net/upload/201605/16/1463392075_397296.png][/img]rnrn我觉得好像是头结点的问题,下面po我写的程序吧rn[code=c]#includernusing namespace std;rnstruct Listrn //构建构建新节点的结构体rn //非递减顺序排列rnrn int data;rn List * next;rn;rnrnvoid insert(List * & headnode, int num)rnrn List *s, *p = headnode, *q; //*s用于建立新节点 *p用于跟踪最新结点rn //以下三行为构建新结点rn s = new List;rn s->data = num;rn s->next = NULL;rnrn //以下if语句用于插入第一个结点rn if (p->next == NULL)rn rn headnode->next = s;rn p = s;rn return;rn rnrn //新节点数据最小时的操作rn if (headnode->next->data > s->data)rn rn s->next = headnode->next;rn headnode->next = s;rn return;rn rnrn //常规对比插入排序rn for (q = headnode->next, p = headnode->next->next; p; q = p, p = p->next)rn rn if (p->data >= s->data)rn rn s->next = p;rn q->next = s;rn return;rn rn rn q->next = s;rn return;rnrnrnvoid ShowList(const List * headnode)rnrn cout << "您所输入的数为:";rn while (headnode)rn rn cout << headnode->data << '\t';rn headnode = headnode->next;rn rn cout << endl;rnrnint main()rnrn int k = 0, m = 0; //k用于输入新数据 m用于计算节点数rn List * headnode = NULL;rn cout << "请输入除零以外的任何数" << endl;rn cin >> k;rn while (k != 0)rn rn insert(headnode, k);rn cin >> k;rn m++;rn headnode->data = m;rn rn ShowList(headnode); //输出链表rn[/code]rnrn在下先向大神谢过,请赐教

没有更多推荐了,返回首页