什么是野指针?这个事野指针吗??

char* str1;str1="abc";int* a;a=123;
2025-03-01 12:11:24
推荐回答(3个)
回答1:

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;//就杜绝了野指针的存在

回答2:

野指针是指没有初始化过的指针,或者销毁后没有安全处理过的指针

如:
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;编译会通不过的

回答3:

野指针表示并未指向任何对象,有没有被赋值为NULL的指针。一般出现在使用未初始化的指针,或delete后未赋值为NULL的指针。str1不是野指针,a = 123有编译错误error: invalid conversion from int to int*