出现了野指针访问,不一定使得程序跑飞,只是有极大的可能导致程序跑飞。但出现了野指针,程序的相应结果是不定的(不正确的)这点是肯定的。
程序跑飞是指程序正常流程随着各种原因偏离了预期正常的执行路径(主要是程序运行指针乱跑,比如陷入死循环、或者指向非可执行区域进而崩溃)等等行为,野指针的出现就有很大可能影响到程序执行路径相关数据内容,导致程序跑飞。其实一些不合理的指针用法一样可以导致程序跑飞。
所以,指针的使用严格采用一定的规范,可以极大的防备出现各种关于指针的问题,比如:
1. 指针定义时及时初始化
2. 指针使用前进行检查
3. 指针使用完后及时置标准值
分两种情况:
1、函数指针,这类指针是作为函数调用的,指向目标函数的内存地址,如果未赋值,里面是个随机数,一旦调用指令计数器PC就会把这个随机数作为函数地址飞到这个内存处。
2、数据指针,用于修改数据。数据指针未赋值,随机地址里面的数据会被篡改,如果这个随机地址指向的是代码区或者堆栈区,再或者是存放其他的函数指针的内存,这些地方一旦篡改,当程序执行到那里就会出现各种故障,跑飞也是现象之一。