本文介绍: 野指针就像野狼,很危险,会导致程序的崩溃,所以要多加小心,要避免写出有野指针的错误代码喔.

野指针
//概念:野指针就是指针指向的位置是不可知的(随机的,不正确的
//,没有明确限制的,空间还属于操作系统而不属于程序的)
//野指针成因:
//1.指针未初始化
#include <stdio.h>
int main() {
    int* p;//局部变量指针未初始化,默认为随机值
    //此时p指向的空间不明确,为野指针
    *p = 20;
    return 0;
}


//2.指针越界访问
#include <stdio.h>
int main() {
    int arr[10] = { 0 };
    int* p = arr;//数组名就是指向第一个元素的地址
    int i = 0;
    for (i = 0; i <= 11; i++) {
        //当指针指向的范围超出数组arr的范围时,p就是野指针
        *(p++) = i;
    }
    return 0;
}


//3.指针的空间释放
int* test()
{
    int a = 10;//a为局部变量,当超出了a的作用于域,a会被销毁
    return &a;
}
int main() {
    int* p = test();//函数返回一个指针
    //但是函数调用结束后,局部变量a会被销毁,现在p就变成了野指针
    return 0;
}


//How.如何规避野指针
//1.指针初始化
//2.小心指针越界
//3.指针指向空间释放即放置NULL
//4.避免返回局部变量的地址
//5.指针使用之前检查其有效性 如if(p!=NULL)

原文地址:https://blog.csdn.net/lingengchao/article/details/135720000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_61349.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注