java与C在底层具体是怎么处理数组越界的?

道乡 2013-10-29 10:31:01
C语言并不检测数组越界,可直接对内存中的数据进行覆盖。但java却会抛出异常,在程序和内存中间是谁在检测数组越界的,还有是怎么检测的。跪求大师详解
...全文
505 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
道乡 2013-10-30
  • 打赏
  • 举报
回复
很详细,谢谢。那C语言是怎么处理数组呢?是直接通过程序去在内存中修改值吗?中间没有其它的东西?
teemai 2013-10-29
  • 打赏
  • 举报
回复
1. ArrayIndexOutOfBoundsException是运行时异常, 编译器是不会知道的, 只有运行时jvm才能捕获到。jvm为何能捕获到,数组在运行时是由jvm创建的一个东西,是用机器指令创建的。。。 类似于汇编指令, 先根据你声明的长度分别为每个元素赋值,压栈, 而对于数组的长度也是由一个特定的指令来得到的, 也会压到栈中。这就是你为什么能用a.length得到数组长度的原因, 并且jvm在读写数组元素时都会有与数组长度比较的指令, 如果越界则抛出异常

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧