空指针与野指针
Ŀ¼ 一、空指针常量 二、空指针 1、空指针指向内存的什么地方 2、逻辑地址和物理地址 3、空指针赋值分区 4、为什么空指针访问会出现异常 三、NULL指针 四、零指针 五、野指针 1、针变量没有被初始化 2、指针被free或者delete之后,没有设置为NULL,让人误以为这是一个合法指针 3、指针操作超越了变量的作用范围 一、空指针常量 一个表示0值的整数常量,叫做空指针常量 。例如:0、0L、1-1(它们都是值为0的整数常量表达式)以及(void*)0、void* NULL 都是空指针常量,空指针常量可以赋值给任何指针类型,因为它是变体类型(void*)。 但是我们更倾向于使用NULL表示这个空指针常量 。对于其它方式(比如0)来表示空指针常量虽然不会产生任何问题,但是在根本意义上并不符合空指针常量的定义。因为空指针常量的存在意义还在强调它并不指向任何对象(后面会讲细节)。 二、空指针 空指针不指向任何实际的对象或者函数 。反过来说,任何对象或者函数的地址都不可能是空指针。空指针是一个特殊的指针,因为这个指针不指向任何地方。这意味任何一个有效的指针如果和空指针进行相等的比较运算时,结果都是false。 int *ip = NULL ; 1、空指针指向内存的什么地方 用哪个具体地址值表示空指针取决于系统实现 。我们常见的空指针一般指向0地址,即空指针的内部用全0来表示(zero