vs2019写⼊访问权限冲突
先说句题外话
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[]
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论