c++入门学习笔记
1. 空指针 与 野指针
空指针最简单的方法是定义为null
int *p = NULL;
或者 int *p= nullptr;
也有把指针定义为0的, 具体参阅:
http://www.cnblogs.com/porter/p/3611718.html
https://www.cnblogs.com/Yan47/p/5968676.html
结论: 如果使用 nullptr 初始化对象,就能避免 0 指针的二义性的问题。
NULL是一个宏定义, #define NULL 0;
要时刻记得这个事情, 程序在判断类型的时候, NULL会被认为是int型变量, nullptr才是空指针, 是指针型变量.
空指针和野指针的判断问题:
空指针是很好判断的. 但是野指针很难判断.
空指针不指向任何实际的对象或者函数, if(p != nullptr)就可以判断
野指针是指针指向地址是随机的, 或者是无效的.
可能是一, 初始化时未声明为null或nullptr
二, 释放指针所指向内存, 但指针没有置为null
避免方法: 初始化必设置为nullptr, 释放必设为nullptr