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

为什么出现了野指针访问就会导致程序跑飞

等事项的 2020-03-09 浏览量:1910
为什么出现了野指针访问就会导致程序跑飞
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 出现了野指针访问,不一定使得程序跑飞,只是有极大的可能导致程序跑飞。但出现了野指针,程序的相应结果是不定的(不正确的)这点是肯定的。

    程序跑飞是指程序正常流程随着各种原因偏离了预期正常的执行路径(主要是程序运行指针乱跑,比如陷入死循环、或者指向非可执行区域进而崩溃)等等行为,野指针的出现就有很大可能影响到程序执行路径相关数据内容,导致程序跑飞。其实一些不合理的指针用法一样可以导致程序跑飞。

    所以,指针的使用严格采用一定的规范,可以极大的防备出现各种关于指针的问题,比如:

    1. 指针定义时及时初始化

    2. 指针使用前进行检查

    3. 指针使用完后及时置标准值

    • 发布于 2020-03-10
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:6
  • 首先,程序跑飞是指系统受到某种干扰后程序计数器PC的值偏离了给定的唯一变化历程导致程序运行偏离正常的运行路径,最后可能会陷入死循环死机。其次,指针是指向一个内存单元的,而野指针的这个指向是不可预知的,随机的,比如野指针指向了一块没有访问权限的内存,会造成程序异常而终止甚至崩溃;还有种情况就是野指针可能会指向一个可用的,而且正在被使用的空间,如果这时通过野指针操作这块空间,那么这块空间被修改,程序正常流程不知其被修改继续运行造成不理想的结果。
    • 发布于2020-03-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 对野指针进行操作很容易造成程序错误。需对指针进行初始化。
    出现问题有可能是指针变量未初始化,指针释放后之后未置空,指针操作超越变量作用域。
    • 发布于2020-03-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 分两种情况:

    1、函数指针,这类指针是作为函数调用的,指向目标函数的内存地址,如果未赋值,里面是个随机数,一旦调用指令计数器PC就会把这个随机数作为函数地址飞到这个内存处。

    2、数据指针,用于修改数据。数据指针未赋值,随机地址里面的数据会被篡改,如果这个随机地址指向的是代码区或者堆栈区,再或者是存放其他的函数指针的内存,这些地方一旦篡改,当程序执行到那里就会出现各种故障,跑飞也是现象之一。

    • 发布于2020-03-10
    • 举报
    • 评论 0
    • 0
    • 0

  •  当程序出现野指针的时候, 指针不知道指向哪里。  也就是 汇编指令 SP 指针指向的地方就是程序将要执行的地方。 因为SP 指向的地方不是正常程序执行的地方。所以程序就出错了。
    • 发布于2020-03-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 指针的地址指向了不确定的位置,原来的程序的PC指针不再指向下一条要执行的程序,程序就会跑飞了啊
    • 发布于2020-03-10
    • 举报
    • 评论 0
    • 0
    • 0

  • 因为野指针指向的区域不可访问,或者是个随机的位置,刚好那个位置有敏感数据,这样会导致程序异常
    • 发布于2020-03-10
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

为什么出现了野指针访问就会导致程序跑飞