C++中的空指针,野指针
空指针不指向任何实际的对象或者函数。
反过来说,任何对象或者函数的地址都不可能是空指针。
空指针是一个特殊的指针,因为这个指针不指向任何地方。
这意味任何一个有效的指针如果和空指针进行相等的比较运算时,结果都是false。
在程序中,得到一个空指针最直接的方法就是运用预定义的NULL,这个值在多个头文件中都有定义。
C++中 NULL即为0.
空指针指向内存的什么地方
常见的空指针一般指向0地址,即空指针的内部用全0来表示(zero null pointer,零空指针);
也有一些系统用一些特殊的地址值或者特殊的方式表示空指针(nonzero null pointer,非零空指针)。
空指针的异常
1.调用NULL对象的方法,即一个对象还没有正常初始化,就先调用它的方法。
例:String s=NULL; int length=s.length;//发生空指针异常
2.当一个变量为NULL,只有变量名,并没有值,也没有分配内存,当对其取长度,会出现指针异常。(声明一个变量时最好给其分配好内存空间,给予赋值)
3.变量为NULL,没有进行判断,直接使用。
4.尽量避免返回NULL,方法的返回值不要定义成为一般的类型,而是用数组。
野指针
野指针不是空指针,是一个指向垃圾内存的指针。
1.指针变量没有被初始化。
2.指针被free或者delete之后,没有设置为NULL,让人误以为这是一个合法指针。
3.指针操作超越了变量的作用范围。