关键词搜索

源码搜索 ×
×

野指针是什么?

发布2023-01-14浏览440次

详情内容

野指针就是指:针指向的位置是不可知的(随机的、不正确的、没有明确限制的)

野指针危害:程序产生错误,一般为内存泄露导致程序中断。

         严重危害:如果野指针指向的位置存放一个病毒,对其解引用后就会导致电脑中毒。

野指针出现的原因:       

1、指针未初始化    : 

创建指针变量的时候,没有初始化。

  1. #include<stdio.h>
  2. int main()
  3. {
  4. char* p; //指针创建,但未初始化,地址是随机值
  5. p=20; // 把20赋给了这个地址,但是依然不知道这个地址在哪
  6. }

 2、指针越界访问    : 

简单地说,就是指针指向了一个数组,但是超出了数组的范围,就会随机指向一个地址。

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int arr[10]={0};
  5. int* p=arr; //此时是数组 首地址
  6. int i=0;
  7. for(i;i<10;i++)
  8. {
  9. *++p = i; // 循环结束,此时p会超出arr的范围,导致p成为野指针
  10. }
  11. return 0;
  12. }

 3、指针指向的空间释放  : 

内存动态开辟之后释放,却没有使指针置空导致的。就是在free之后指针没有赋值NULL,此时此刻的指针指向的是无效内存。

  1. int main()
  2. {
  3. int* p = NULL;
  4. //开辟动态内存
  5. p = (int*)malloc(10 * sizeof(int));
  6. if (!p)
  7. {
  8. return;
  9. }
  10. free(p);
  11. //释放内存,然后使p置NULL;
  12. p = NULL;
  13. return 0;
  14. }

     

                                                                                  

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载