野指针是什么?

简介: 野指针是什么?

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

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

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


野指针出现的原因:  

 

1、指针未初始化    :


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

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


2、指针越界访问  

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

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


3、指针指向的空间释放

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

int main()
{
  int* p = NULL;
    //开辟动态内存
  p = (int*)malloc(10 * sizeof(int));
  if (!p)
  {
    return;
  }
  free(p);
    //释放内存,然后使p置NULL;
  p = NULL;
  return 0;
}


目录
相关文章
指针的部分应用
指针的部分应用
53 0
|
8月前
|
编译器
深入理解指针(2)
深入理解指针(2)
43 2
|
3月前
|
编译器
指针初步讲解(下)
指针初步讲解(下)
38 2
|
4月前
|
存储 C语言
C 指针详解
C 语言中的指针是一个强大而重要的概念,用于间接访问变量的存储地址。指针是一个变量,存储其他变量的地址,类型与其指向的数据类型相关。基本操作包括取地址 (`&`) 和解引用 (`*`)。指针使用前需初始化,可指向有效地址或为空 (`NULL`)。指针支持算术运算,可用于数组和函数。通过 `malloc` 和 `free` 可管理动态内存。多级指针允许存储指针的地址。使用指针时需注意初始化、防止内存泄漏及避免访问无效地址。掌握指针是精通 C 语言的关键。
52 13
|
8月前
|
存储
什么是指针?
什么是指针。
53 1
|
8月前
|
存储 程序员
C指针详解
C指针详解。
35 0
|
C++
c++ 加强指针理解
c++ 加强指针理解
45 1
|
8月前
|
存储 人工智能 大数据
C++017-C++指针及其应用
C++017-C++指针及其应用
|
存储 编译器 C++
认识C++指针
认识C++指针
100 0

热门文章

最新文章