root.left已经初始化了,为什么还会有读取访问权限冲突这个问题

img

img

root.left已经初始化了,为什么还会有读取访问权限冲突这个问题

【以下回答由 GPT 生成】

这个问题发生的原因是你在初始化root.left时,将其指向了一个局部变量node1。当你离开if语句块时,node1的生命周期结束,它的内存空间被释放。所以当你后续再访问root.left时就会出现读取访问权限冲突的异常。

要解决这个问题,你可以使用new操作符来动态申请一个内存空间来存储node1对象。这样,node1对象就会在堆上分配内存,而不是栈上。具体的解决方案如下:

if (root.left == nullptr) {
    Node* node1 = new Node;
    root.left = node1;
}

当你后续不再使用node1时,记得要释放它占用的内存空间,以避免内存泄漏:

delete root.left;
root.left = nullptr;

这样就能够解决你遇到的读取访问权限冲突的问题了。希望对你有帮助!如果你还有任何问题,请随时提问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

0xCCCCCC是典型的野指针。
你给它初始化的是一个临时变量,出了if作用域就没了,本来有效的地址也无效了。