空指针与野指针。
1、什么是野指针?
如果定义了指针变量且未初始化,则系统可以随机为此指针变量分配地址。 也就是说,这个指针指向未知的区域。 指针变量的故事称为野指针。
2、如何解决野指针?
1 )在定义指针变量的同时初始化地址值。
例:
int a;
int *p=a; //p不指未知领域,而是指a空间的地址。
2)使用空指针。
什么是空指针?
实际上,空指针是内存空间上的地址,这个地址是0x0
#define NULL0 -NULL等价于0x0,等价于null指针-〉指向空间是安全的区域。
例:
int a;
int *p=NULL; -p表示安全区域。 p=a;
3、如果一个指针指向安全区域,这时候解引用这个指针,会怎样?
发生段错误: segmentation fault (核心中断)
4、如果出现段错误,怎么找?
段错误不是语法错误,因此在gcc编译时不提供任何内容,如果在运行时出现段错误,程序将打印Segmentation fault(core dumped ),然后程序立即退出。