首页 > 其他分享 >C语言中的野指针问题

C语言中的野指针问题

时间:2024-01-22 14:01:02浏览次数:29  
标签:return 指向 int C语言 问题 null 指针

1、以下这种情况p也是个野指针

int * ceFun()
{
    int x = 5;
    return &x;
}


int main()
{
    int * p = ceFun();
    
    *p = 70;

    printf("%p\n", p);

    return 0;
}

因为p指向了一个局部变量,指向了一个已经释放内存的变量

2、还有哪些现象,开始定义的时候没有初始化,指向一块不存在的内存等

所以如何规避野指针问题:

(1)指针在定义的时候,一定要进行初始化
(2)在不使用指针之后,一定要及时置为null
(3)指针尽量不要指向一个局部变量的地址
(4)指针不能越界,这个在使用数组时,特别要注意
(5)在使用指针之前最好做下检查,判断是否为null

 

标签:return,指向,int,C语言,问题,null,指针
From: https://www.cnblogs.com/JJ-Wu/p/17979906

相关文章

  • C语言中的操作符:了解与实践
    ​✨✨欢迎大家来到贝蒂大讲堂✨✨​......
  • .net8 传参数遇见个很郁闷的问题
    将老项目迁移至.net8遇见个奇葩问题记录下,顺便看有人遇见过么新建.net8 mvc项目控制器publicclassHomeController:Controller{privatereadonlyILogger<HomeController>_logger;publicHomeController(ILogger<HomeController>logger)......
  • Mybatis慢查询问题
    一、问题使用Mybatis查询数据库数据时发现,时间跨度大且数据量多的情况下,查询速度变得十分慢,120s以上然而将sql语句放至数据库中去查询时速度很快,只在10s左右带两个时间条件的情况下,最慢任意一个时间或者不带时间次之二、Mybatis中的sqlselecth.SBDW_ID,h.SBDW,count(dist......
  • 股票买卖问题总结
    其实也是动态规划的一种变形,总的来说,是定义一个二维数组dp[i][j],i表示的是天数,j表示的状态,总的表示收益。最基础的就是有两种状态,dp[i][0]表示未持有股票,dp[i][1]表示持有股票。用动态规划的思想:dp[i][0],dp[i][1]都是从dp[i-1]推得的。只买卖一次:点击查看代码dp[i][0]=......
  • ubuntu22.04 mysql服务每天自动shutdown问题
    1.问题描述MYSQL每天自动关闭,查看/var/log/mysql/error.log.1.gz,内容如下:2019-06-12T06:33:13.582973+08:000[Note]Shuttingdownplugin‘CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS’2019-06-12T06:33:13.583022+08:000[Note]Shuttingdownplugin‘CONNECTION_CON......
  • C语言中的access函数的使用(转载)
    在Linux下,access函数的声明在<unistd.h>文件中,声明如下:intaccess(constchar*pathname,intmode);access函数用来判断指定的文件或目录是否存在(F_OK),已存在的文件或目录是否有可读(R_OK)、可写(W_OK)、可执行(X_OK)权限。F_OK、R_OK、W_OK、X_OK这四种方式通过access函数......
  • 【LeetCode 2494. 合并在同一个大厅重叠的活动】[MySQL 用户变量/Pandas]面向过程编程
    目录题目地址MySQL代码等效pandas代码题目地址https://leetcode.cn/problems/merge-overlapping-events-in-the-same-hall/MySQL代码#WriteyourMySQLquerystatementbelowwitht2as(select*#----只需要改动这里的逻辑,其他不要动。注意里面的语句是“顺序......
  • 【Leetcode 2474. 购买量严格增加的客户】[MySQL 用户变量/Pandas]面向过程编程解决严
    目录题目地址MySQL代码等效pandas代码题目地址https://leetcode.cn/problems/customers-with-strictly-increasing-purchases/description/MySQL代码#WriteyourMySQLquerystatementbelowwitht1as(selectcustomer_id,year(order_date)asmy_year,sum(price)......
  • C语言基于面向对象的编程方法示例
    C语言基于面向对象的编程方法示例原型声明:typedefstruct_OBJECT_OPS{int(*get_name)(char*param);int(*set_name)(constchar*param);int(*dump)(intlevel);}OBJECT_OPS;原型初始化:OBJECT_OPSmyself={.get_name=get_my_name,.set_n......
  • 桶排序 -解决了什么问题
    桶排序法的优点高效的时间复杂度:在均匀分布的情况下,桶排序的平均时间复杂度接近线性,具有较高的排序效率。这是因为桶排序将元素分散到多个桶中,每个桶独立地进行排序,而不需要像比较排序算法那样逐个比较和交换元素。适用于外部排序:桶排序适用于需要排序的数据量非常大,无法全部......