野指针:
若定义整型变量时不进行初始化,系统会自动分配随机值给变量。
同样若定义整型指针变量不进行初始化,系统会随机分配地址给指针变量。
此时这个指针叫作野指针。
当对野指针进行解引用并进行读取时,就会导致有可能将内存中 代码区、数据区、堆区中的地址赋予某个变量,若后续接着对这个变量进行修改,将有可能将其他各区(上述三个区)的数据进行修改,导致很严重的错误(特别是代码区)。
在vs2019中,若对未初始化的指针变量进行解引用,系统可以识别出此错误。
要杜绝野指针的出现,
就得在定义指针的时候,必须对其赋值或者定义为空指针(这是重中之重)。
空指针:
0地址就是空地址。空指针不能进行解引用、不能赋值。
定义空指针可以用来 对指针进行判空,用来判定指针是否合法,合法才能在后续进行解引用。
所以在编程中,只要函数的形参使用的是指针变量,就得记得首先对指针进行判空。
关于未定义的全局变量,静态全局变量,局部静态变量,系统都是自动分配为0。
而在vs2019中,未定义的全局指针变量,全局静态指针变量,局部静态指针变量,系统都是自动分配为空指针。但是其他编译器就未必了,所以在编程中必须记得给指针变量初始化(赋值或者定义为空指针)。