关于C语言指针类型的总结

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

以下介绍几种野指针情况

①指针未初始化

#include <stdio.h>
int main()
{        
 int *p;//局部变量指针未初始化,默认为随机值

 *p = 20;
  return 0;
}

②指针越界访问

 #include <stdio.h>
 int main()
 {
   int arr[10] = {0}
   int *p = &arr[0];
   int i = 0;
 for(i=0; i<=11; i++)
 {
      //当指针指向的范围超出数组arr的范围时,p就是野指针
  *(p++) = i;
  }
   return 0;

③指针指向的空间释放

 #include <stdio.h>
 int* test()
 {
 int n = 100;
 return &n;
 }
 int main()
 {
 int*p = test();
 printf("%d\n", *p);
 return 0;
 }

出函数的时候变量n申请的空间会归还给操作系统
存在p中的地址没有指向的空间

上一篇:qt 滚动条 美化


下一篇:开源运维软件适用性评估:多维度视角下的理性选择