堆栈上的c ++访问冲突写入异常[关闭]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了堆栈上的c ++访问冲突写入异常[关闭]相关的知识,希望对你有一定的参考价值。
我尝试使用控制台输入在c ++中编写UPN计算器。所以我编写了一个节点和一个堆栈类,并在主类中使用它。当开始一切顺利,直到我开始把东西推到堆栈。然后我得到一个“访问违规写入异常”,并没有真正理解问题是什么。
#include "pch.h"
#include "Node.h"
Node::Node(int value)this->value = value;
int Node::GetValue()return this->value;
Node * Node::GetNode()return this;
Node* Node::GetNextNode()return this->next_node;
bool Node::SetNextNode(Node n)
this->next_node = &n;
return true;
Node * Node::GetBeforeNode()return this->before_node;
bool Node::SetBeforeNode(Node n)
this->before_node = &n; // <---- the error occures here
return true;
答案
不要使用本地范围创建指向变量的指针。
你的Node n
按值传递给SetBeforeNode
,所以它被复制了,你拿它的地址,但是然后n
超出了范围,你继续悬挂指针,所以而不是:
bool Node::SetBeforeNode(Node n)
它应该是:
bool Node::SetBeforeNode(const Node& n)
以上是关于堆栈上的c ++访问冲突写入异常[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
jQuery 将 iframe 写入 XLS 导致 iPhone 上的沙箱访问冲突
ctypes,python3.5,OSError:异常:访问冲突写入 0x00000000
ctypes,python3.8:OSError:异常:访问冲突写入0x00000000