1.野指针
![]()
![]()
![]()
![]()
野指针是表示指针指向的内存空间被释放了,导致这个指针指向了不能使用的空间,如果在访问则会出错,所以一般在释放空间后给野指针赋值NULL
例:
int main(int argc, const char *
argv[]) {
int *p
= ( int *)malloc (4);//开辟空间
*p = 100;
free(p); //释放空间,p就成为了野指针
p = NULL; //因为p 为野指针了,所以最好把它指向 NULL(0 位置)
return 0;
}
销毁开辟的空间后,p指针指向了不可用的空间,此时p成为了野指针
2.内存溢出
内存溢出是说指向该内存的指针变量在栈中被销毁后,而这块内存没有被销毁,导致这块内存不能被释放。
例:
int main(int argc, const char *
argv[]) {
int *p
= ( int *)malloc (4);//开辟空间
*p = 100;
return 0;
}
当上面的p变量在main函数执行完后,指针变量p从栈中被销毁,但是开辟的4个字节大小的空间却没有被销毁,导致内存溢出了。
p指针被销毁后