[其他] 什么是野指针

[复制链接]
 楼主| 小夏天的大西瓜 发表于 2024-2-28 23:00 | 显示全部楼层 |阅读模式

什么是野指针

1.指向已被释放或无效的内存地址的指针是野指针。

什么情况下产生野指针

1.内存释放后未置空指针

int*ptr=(int*)malloc(sizeof(int));free(ptr);*ptr=10;//这里ptr成为了野指针

2.返回局部变量的指针

int*getIntPointer(){
  intnum=5;
  return#//返回局部变量的指针
}
int*ptr=getIntPointer();
*ptr=10;//getIntPointer返回一个野指针

3.未初始化指针

char*p;

tpgf 发表于 2024-3-1 09:47 | 显示全部楼层
既然已经释放了 那么这个指针还能存在吗?
八层楼 发表于 2024-3-1 10:27 | 显示全部楼层
野指针有没有其存在的必要性呢?还是说必须要消除呢
guanjiaer 发表于 2024-3-1 22:20 | 显示全部楼层
指针变量一定要初始化为NULL,因为任何指针变量(除了static修饰的指针变量)刚被创建时不会自动成为NULL指针,它的缺省值是随机的。
观海 发表于 2024-3-1 22:51 | 显示全部楼层
野指针指向的位置是不可知的 但是只要我们不操作它 就不会有问题是吧
晓伍 发表于 2024-3-1 23:22 | 显示全部楼层
可以通过赋值来实现野指针的重复利用吗
磨砂 发表于 2024-3-1 23:53 | 显示全部楼层
如何检测野指针的存在并定时释放呢
Jacquetry 发表于 2024-3-28 10:51 来自手机 | 显示全部楼层
不行,野指针赋值会影响别的程序运行
jf101 发表于 2024-3-28 15:44 | 显示全部楼层
tpgf 发表于 2024-3-1 09:47
既然已经释放了 那么这个指针还能存在吗?

这样的话就造成了非法访问了,内存报错
OKAKAKO 发表于 2024-4-24 14:30 | 显示全部楼层
八层楼 发表于 2024-3-1 10:27
野指针有没有其存在的必要性呢?还是说必须要消除呢

其实任何技术都有合理利用的可能性
您需要登录后才可以回帖 登录 | 注册

本版积分规则

257

主题

2238

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部

257

主题

2238

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部