22373195 张敏尔 2023-09-26 14:55 采纳率: 63.6%
浏览 5

运行出现指向空对象报错

出现空指针报错,显示是在main函数的39和43行,想知道问题出在哪里

img

img

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-26 16:35
    关注

    【相关推荐】



    • 你可以看下这个问题的回答https://ask.csdn.net/questions/7639128
    • 你也可以参考下这篇文章:在main()方法中,对可能产生错误的语句捕获相应异常
    • 除此之外, 这篇博客: 数组放在main函数内外的区别中的 问题分析  部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

      那为什么大数组一定要放在main函数外面而不能放在里面呢?

      原因在于开设数组的区域不同,在运行代码的时候,操作系统会分配不同的内存区域来运行代码

      栈区:由操作系统自动分配释放,存放函数的参数值,局部变量的值,不需要时系统会自动清除,内存较小
      堆区:由new分配的内存块,也就是说在代码中new一个数组,内存由堆区分配;堆区不由编译器管,由应用程序控制,相当于程序员控制。如果程序员没有释放掉,程序结束后,操作系统会自动回收
      数据区:也称全局区或者静态区,存放全局的东西,比如全局变量,内存较大
      代码区:存放执行代码的地方

      简而言之,在main函数外面开设一个数组,它的内存分配在数据区里;而如果在main函数内部开设一个数组,它的内存分配在栈区内。一般来说栈区的内存是比较小的,所以平常开一些小一点的数组是完全没问题的;但如果题目要求的数组比较大,那就会出现爆满溢出的情况,程序将无法访问内存而出错;相反,数据区的内存较大,就不会出现这样的问题。这就是为什么开设大数组一定要放在main函数之外的原因。

       

      今天又收获一个新的bug!(笑哭)
       

      watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQXJpY2wu,size_20,color_FFFFFF,t_70,g_se,x_16

       

       

       

       


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

报告相同问题?

问题事件

  • 创建了问题 9月26日

悬赏问题

  • ¥15 如何入门学习c语言,单片机
  • ¥15 idea 编辑语言的选择
  • ¥15 Windows下部署Asmjit
  • ¥15 请问双层规划模型的上下层目标函数不一致,是如何保证迭代收敛性的
  • ¥15 微信小程序 前端页面内容搜索
  • ¥15 cpu是如何判断当前指令已经执行完毕,然后去执行下条指令的
  • ¥15 安装visual studio2022时visualstudiosetup启动不了,闪退。问题代号0x0和0x1389
  • ¥30 java spring boot2.5.3版本websocket连不上
  • ¥15 angular js调外部链接查看pdf
  • ¥15 openFOAM DPMFoam