岂曰无衣264 2023-08-09 15:55 采纳率: 98.8%
浏览 4
已结题

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

img

img

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

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-09 19:53
    关注

    【以下回答由 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;
    

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



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月19日
  • 已采纳回答 8月11日
  • 修改了问题 8月9日
  • 创建了问题 8月9日