• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

对于一个数组为什么越界使用会导致MCU的程序跑飞呢

树上的龙猫 2020-02-17 浏览量:916
对于一个数组为什么越界使用会导致MCU的程序跑飞呢
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 这是因为数组越界使用,可能会直接操作到系统内存中的关键信息,比如运行中的中断保存数据,当意外的修改了这些数据后,程序执行到这个数据部分发现已经修改,就导致程序数据错误,从而跑飞
    • 发布于 2020-02-22
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:4
  • 有可能越界的地方正好是其他内存正在使用中的重要信息,越界后会覆盖其他正在正常使用的内存,这样运行就会出错跑飞,如果没有其他内存用就没用事
    • 发布于2020-02-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 不光数组越界使用,非法访问内存数据(特别是写入数据),都可能使得程序跑飞。

    因为 内存中的数据本身是根据程序加载分配给各种变量等使用的,如果通过地址非法访问写入数据(数组越界使用也是这样的一种情况),则就非法改变了某个数据值,有可能这个数据是控制程序流程的,这样程序当然就不能正常按流程走,就跑飞啦。

    比如 整数数组A[20]后面的内存地址分配给 整型变量b,在程序中有

    b=99

    while(b<100){

    ...

    b++;

    A[20]=50;

    }

    这样的程序因为b一直会因为A越界访问改写为50,所以就死循环啦。



    这种非法访问,数组使用越界问题是最容易出现的,因为数组越界使用除非程序员自行判断处理,编译器等一般是检测不了这样的问题的。

    • 发布于2020-02-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 因为越界操作的位置有可能保存了关键数据,这个跑飞并不是一定的,只有在越界操作到关键数据才会
    • 发布于2020-02-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 越界后,指针的位置是随机 的了,这样程序跳转到一个非正常的地址上,再运行下面的程序时,就逻辑错误,就会跑飞了
    • 发布于2020-02-26
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

对于一个数组为什么越界使用会导致MCU的程序跑飞呢