堆栈上的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 ++访问冲突写入异常[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

c ++访问冲突写入位置0x00000000

jQuery 将 iframe 写入 XLS 导致 iPhone 上的沙箱访问冲突

ctypes,python3.5,OSError:异常:访问冲突写入 0x00000000

ctypes,python3.8:OSError:异常:访问冲突写入0x00000000

PYTHON - Ctypes:OSError:异常:访问冲突写入0xFFFFFFFFFA1C001B

例外:使用 strcpy_s 时访问冲突写入位置