打印
[其他]

什么是野指针

[复制链接]
4672|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

什么是野指针

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指针,它的缺省值是随机的。

使用特权

评论回复
5
观海| | 2024-3-1 22:51 | 只看该作者
野指针指向的位置是不可知的 但是只要我们不操作它 就不会有问题是吧

使用特权

评论回复
6
晓伍| | 2024-3-1 23:22 | 只看该作者
可以通过赋值来实现野指针的重复利用吗

使用特权

评论回复
7
磨砂| | 2024-3-1 23:53 | 只看该作者
如何检测野指针的存在并定时释放呢

使用特权

评论回复
8
Jacquetry| | 2024-3-28 10:51 | 只看该作者
不行,野指针赋值会影响别的程序运行

使用特权

评论回复
9
jf101| | 2024-3-28 15:44 | 只看该作者
tpgf 发表于 2024-3-1 09:47
既然已经释放了 那么这个指针还能存在吗?

这样的话就造成了非法访问了,内存报错

使用特权

评论回复
10
OKAKAKO| | 2024-4-24 14:30 | 只看该作者
八层楼 发表于 2024-3-1 10:27
野指针有没有其存在的必要性呢?还是说必须要消除呢

其实任何技术都有合理利用的可能性

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

206

主题

1788

帖子

2

粉丝