char* str1;
str1="abc";
int* a;
*a=123;//这里赋值写错了
这不是野指针
野指针是指向垃圾的指针,很恐怖的.
int *a = new int[100];
delete[] a;
这时候 a 就是野指针.
野指针靠
if (a == NULL)
是检查不出来的.
int *a = new int[100];
delete[] a;
a = NULL;//就杜绝了野指针的存在
野指针是指没有初始化过的指针,或者销毁后没有安全处理过的指针
如:
int *p;
没有对p赋值,p指向的地址不确定
或
int *p = (int*)malloc(10 * sizeof(int));
free(p);
p指向一个无效的地址
安全的处理方式是
int *p = NULL;
/////////
if(p)
{
free(p);
p = NULL;
}
你的
a = 123;编译会通不过的
野指针表示并未指向任何对象,有没有被赋值为NULL的指针。一般出现在使用未初始化的指针,或delete后未赋值为NULL的指针。str1不是野指针,a = 123有编译错误error: invalid conversion from int to int*