//野指針的形成
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
//野指針的成因一:指針未初始化
//定義變量,最好給它初始化
int a;//局部變量不初始化,預設值為随機值
int *p;//局部的指針變量不初始化,預設值為随機值
*p = 20;
return 0;
}
//野指針的成因二:指針越界通路
int arr[10] = { 0 };
int *p = arr;
for (int i = 0; i < 11; i++)
{
*(p++) = 1;
}
//野指針的成因三:指針指向的空間釋放
int *test()
{
int a = 10;
return &a;//傳回值,函數空間被釋放
}
int main()
{
int *p = test();
*p = 20;//再想要找到,已經無法找到
return 0;
}
//a空間已經不屬于目前程式
舉個例子:
你來到一家飯店想居住一晚,第二天,告訴你朋友可以來到這個房間居住,但是你第二天把這個房間給退了,你兄弟來了之後,死活都要住進這個房間,這個是非法操作