码迷,mamicode.com
首页 > 其他好文 > 详细

vs2019 写入访问权限冲突

时间:2019-10-04 17:15:19      阅读:725      评论:0      收藏:0      [点我收藏+]

标签:cin   lin   图片   nod   free   cdc   data   inf   构造   

先说句题外话

vs反应有时候有点慢,改过的地方等几秒才会显示正确

另外有时候正确的地方会报错,重启吧

 

回到正题

 

“引发了异常: 写入访问权限冲突。

_Left 是 0xCDCDCDCD。

如有适用于此异常的处理程序,该程序便可安全地继续运行。”

 

原因是在初始化栈时使用了malloc,而栈的自定义对象中有string

 

malloc只是分配内存,并不进行初始化,不调用类的构造函数,所以当以下这两处调用发生的时候,都会出现错误
getline(cin, p->data); 还有
     p = (DNode*)malloc(sizeof(DNode));
                        p->data = ss;
都是因为string对象的构造函数没有被调用,没有构建string对象。所以,getline函数无法调用string对象进行赋值,同样,date也无法完成赋值。
同理,你修改后的程序,因为使用的是int类型替代string类型,所以没有上面说的情况发生,所以可以运行。

解决办法,用new代替malloc,
  p = new(DNode);
new会调用相应类的构造函数完成初始化。

 

技术图片

 

 注意这样做free栈时要用delete[]

 

技术图片

 

vs2019 写入访问权限冲突

标签:cin   lin   图片   nod   free   cdc   data   inf   构造   

原文地址:https://www.cnblogs.com/lqerio/p/11622282.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!