C语言中的野指针和空指针 发布时间:2026/8/5 9:36:58 在测试中有时候开机正常有时候跑几分钟死机。测试bug中经常遇到正常跑某个流程是正常的但是在特定条件下总是遇到程序崩溃业务中断。也会遇到同样的代码在这次运行正常下次就会崩溃。今天涉及的空指针就会造成问题现象稳定复现野指针会出现BUG飘忽不定。为了减少这种烦恼本文将介绍什么是空指针和野指针他们有哪些危害平时我们又该如何预防呢一、定义1、空指针NULL Pointer–是合法的指针状态指针变量被赋值为NULL本质是宏一般等价于void*0,代表指针不指向任何合法有效的内存地址明确表明当前指针没有指向有效地址。NULL是C标准规定的特殊常量地址0C新增nullptr2、野指针Wild Pointer指针变量保存了一个随机、未知、不受控制的非法内存地址没有初始化或者指向的内存已经被释放。int*p;//局部变量未初始化内存残留随机值---》野指针int*pmalloc(4);free(p);//free之后不会自动变为NULLp依旧保存原来地址---》野指针二、危害1、空指针带来的困扰1程序直接崩溃确定性故障Linux产生错误SIGSEGVWindows程序闪退。服务端程序一旦崩溃业务中断嵌入式设备直接死机、重启。2崩溃堆栈清晰但是容易忽略边界场景很多场景只是在特定条件下指针才变成NULL正常流程跑不出来。3增加防御代码负担所有接收指针的函数都要加if(pNULL)判断如果漏了就会埋下崩溃隐患。空指针造成的故障稳定只要充分测试大多可以提前发现。2、野指针带来的困扰1Bug难以复现未定义行为UB同样的代码这次运行正常下次崩溃。野指针保存的随机地址每次运行不一样。刚好访问只读内存程序直接崩溃刚好访问进程合法内存静默运行无任何报错。2隐性数据纂改无声的破坏性BUG野指针碰巧指向程序其他变量、数组、栈上数据进行写操作—不会崩溃但是悄悄修改其他变量的值。eg变量值莫名被篡改日志看不出异常业务逻辑错乱计算结果错误。3破坏栈、堆内存引发连锁崩溃egA函数报错根源在完全不相干的B函数野指针。改写堆内存管理块后续调用malloc/free直接崩溃破坏栈上函数返回地址程序跑飞出现诡异的非法指令崩溃–崩溃点不是野指针出错的地方崩溃堆栈完全误导人。4无法通过简单判空防御判空只能防御空指针防御不了野指针。5重复free释放重复free触发堆破坏程序直接崩溃。6嵌入式环境危害大嵌入式没有完善内存保护野指针可能改写寄存器、外设地址导致硬件异常设备失控三、出现后现象表现1、空指针操作现象–不能对空指针引用*pLinux段错误Segmentation faultSIGSEGV程序直接崩溃。Windows触发访问异常程序闪退如下单纯if(pNULL)判断空指针完全没有问题只有解引用才报错。2、野指针操作现象很多人以为出错是空指针实际大量线上崩溃、诡异逻辑错误都是野指针导致有如下几种可能情况直接崩溃访问操作系统保护地址报段错误静默运行没有报错刚好指向程序自己可读内存读写成功潜伏bug破坏其他变量参数改写了别的合法变量的值造成莫名奇妙的数据错乱间歇性崩溃有时候跑正常有时候崩溃。四、野指针产生的根源1、指针未初始化局部指针变量不赋初值栈内存残留随机垃圾值野指针int*p;*p5;//给未知地址赋值了52、内存free后指针没有NULL#includestdio.h#includewindows.h#includemath.hintmain(){SetConsoleOutputCP(65001);SetConsoleCP(65001);int*pmalloc(4);free(p);//p仍然保存原来的地址变为野指针printf(p的地址%p\n,p);if(p!NULL){*p10;//访问已经释放的内存}}3、指针越界、指向临时变量栈内存失效#includestdio.h#includewindows.h#includemath.hint*func(){inta10;returna;}intmain(){SetConsoleOutputCP(65001);SetConsoleCP(65001);int*p;pfunc();printf(p的地址%p\n,p);if(p!NULL){*p10;//访问已经释放的内存}}func中的a是局部变量函数结束栈回收返回的指针变为野指针编译只是警告仍可编译成功五、预防1、编码规范指针一律初始化使用指针之前先确定位置free后置NULL使用指针解引用之前先判断是否为NULL函数接收指针参数优先做空指针防御检查禁止返回局部栈变量的地址2、尽量减少裸指针有条件使用封装3、工具辅助linux:valgrind检测内存泄漏、野指针、重复freegcc编译加警告gcc -wall -wextra尽可能捕获未初始化指针使用地址消毒器AddressSanitizer-fsanitizeaddress快速定位野指针、越界访问。总结空指针明确指向“无地址”可控野指针指向随机未知地址极度危险。 相关新闻 小白程序员轻松掌握大模型进阶:Agentic RAG 让你的 RAG 系统回答更准确! 本文深入探讨了传统 RAG 系统的瓶颈,即缺乏对检索过程的决策能力。提出了 Agentic RAG 的解决方案,通过引入判断-检索-验证-迭代-生成的闭环流程,有效提升回答准确率。文章详细解析了五个关键决策点:意图路由、查询重构、多路召回… 2026/8/5 9:36:58 Unity游戏马赛克消除终极指南:UniversalUnityDemosaics完全使用手册 Unity游戏马赛克消除终极指南:UniversalUnityDemosaics完全使用手册 【免费下载链接】UniversalUnityDemosaics A collection of universal demosaic BepInEx plugins for games made in Unity3D engine 项目地址: https://gitcode.com/gh_mirrors/un/UniversalUn… 2026/8/5 9:36:58 图标一致性崩塌危机,如何用Prompt Engineering+微调工作流重建品牌视觉资产库,7步落地手册 更多请点击: https://codechina.net 第一章:图标一致性崩塌的根源诊断与影响评估 图标一致性崩塌并非视觉层面的偶然失序,而是设计系统、开发流程与协作机制多重断裂的外在表征。当同一应用中出现 SVG 路径不统一、语义命名冲突、尺寸单位混… 2026/8/5 9:36:58 最新新闻 2026年主流知识视频总结工具 成本维度实测对比,差距竟然这么大,多数用户选了同一款 简短结论 本次对比的五款主流知识视频总结工具各有适配场景,不存在绝对最优解。从成本和核心功能适配来看,自媒体做内容二次加工、职场整理会议/访谈、学生整理课堂知识,都能找到匹配选项。听脑AI更适合需要把音视频进一步整理成可复用内容的… 2026/8/5 10:44:27 TEMU店群自动化管理系统:C++级指纹伪装深度,连系统调用层都查不出 TEMU店群自动化管理系统:C级指纹伪装深度,连系统调用层都查不出 老店群人都有个体会:TEMU的批量抓取采集,是店群运营中最耗人力也最容易出错的环节。 采集竞品数据是店群运营的命脉。但各大平台的反爬系统越来越强,普… 2026/8/5 10:44:27 SQL语法实战大全:从CRUD到窗口函数与性能优化 1. 从“增删改查”到实战:为什么你需要一份SQL语法用例大全?如果你刚接触数据库,或者在工作中偶尔需要和数据库打交道,听到“SQL”这个词,第一反应可能就是“增删改查”。没错,SQL(Structured Q… 2026/8/5 10:44:27 Hotkey Detective:Windows热键冲突的终极侦探,快速定位“偷走“你快捷键的元凶 Hotkey Detective:Windows热键冲突的终极侦探,快速定位"偷走"你快捷键的元凶 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh… 2026/8/5 10:44:27 缓存设计核心原则:从策略选型到经典问题解决方案 1. 缓存设计的核心价值与挑战在任何一个处理数据请求的系统里,缓存都是一个绕不开的话题。它不像数据库那样负责数据的持久化存储,也不像业务逻辑层那样处理复杂的计算,但它的存在,却直接决定了系统的响应速度和用户体验的上限。简… 2026/8/5 10:44:27 从刚性到柔性:新型电力系统演进与关键技术解析 1. 项目概述:我们正在谈论一个怎样的系统? 聊到“电网”,很多人第一反应可能就是家里的电表、墙上的插座,或者偶尔看到的电线杆和铁塔。这没错,但太片面了。我干了十几年能源相关的工作,从现场运维到系统规… 2026/8/5 10:39:27 日新闻 鸿蒙6.1 arkui.componentSnapshot组件截图坑:返回PixelMap不是dataURL 本文是「鸿蒙 6.1 API 23 开发坑系列」第 2 篇(ArkUI 桶第 2 篇)。本篇讲 ohos.arkui.componentSnapshot namespace(API 10,鸿蒙 6.1 API 23 基座)——组件截图三个方法 get/getSync/createFromBuilder。鸿蒙坑根因&am… 2026/8/5 0:26:31 20个P0级大模型本体概念,产品经理必看,收藏这份学习资料! 文章介绍了20个大模型本体概念,帮助产品经理在AI产品决策时,不再依赖模糊判断,而是基于精准认知。内容涵盖了模型分类、开源与闭源模型、本地与云端部署、基础模型与对话模型、推理模型、Token、上下文窗口、幻觉、温度参数、系统提示词、思维… 2026/8/5 0:26:31 支付宝体验技术部拆分!前端转型Agent全栈,小白程序员必收藏 支付宝体验技术部拆分,前端工程师转型Agent开发全栈。玉伯等专家主导的团队,曾开发Ant Design、AntV等知名开源项目,影响行业。AI技术推动智能Agent兴起,打破前端边界,需掌握大模型、智能体逻辑等能力。组织调整旨在灵… 2026/8/5 0:26:31 周新闻 ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案 ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经从网易云音乐下载了心爱的歌曲&am… 2026/8/5 5:03:56 分布式配置中心选型实战:Nacos与Consul在创业场景下的对比 分布式配置中心选型实战:Nacos与Consul在创业场景下的对比工程导读:本文深入讨论 分布式配置中心选型实战:Nacos与Consul在创业场景下的对比 在生产工程实践中的核心落地方案。基于 分布式架构与微服务设计 视角,剖析实际痛点、架… 2026/8/5 7:15:00 MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案 MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案 【免费下载链接】MoneyPrinterPlus AI一键批量生成各类短视频,自动批量混剪短视频,自动把视频发布到抖音,快手,小红书,视频号上,赚钱从来没有这么容易过! 支持本地语音模型chatTTS,fasterwhisper,… 2026/8/5 6:23:51 月新闻 【YOLOv11模型改进系列】08 数据增强的终极形态:用AutoAugment让YOLOv11自己学会“什么数据最有用” 08 数据增强的终极形态:用AutoAugment让YOLOv11自己学会“什么数据最有用” 老伙计,咖啡准备好了吗?上篇我们聊了Mosaic+MixUp的“混乱美学”,你肯定已经体会到,手动调数据增强策略就像给模型当保姆——每换一个数据集就要重新试一遍参数。 上周有个做工业质检的朋友找我… 2026/8/5 7:15:27 AI 智能电动窗帘电机高集成、低功耗 MOSFET 精准选型方案 随着 AIoT 与智能家居深度融合,智能电动窗帘电机对功率 MOSFET 提出新要求:微型化、高效率、逻辑电平驱动及静音运行。微碧半导体(VBsemi)基于先进的 Trench 和 SGT 工艺,为您提供覆盖 H桥驱动、电源管理及电机控制的完… 2026/8/4 8:25:47 AI 智能电动窗帘电机智能功率 MOSFET 完整选型方案 随着 AI 技术在智能家居中的普及(如语音控制、光线感应、场景联动),电动窗帘电机对功率 MOSFET 提出更高要求:高效率、低噪音、高集成度。微碧半导体(VBsemi)基于 SGT 及 Trench 工艺,为您提供覆… 2026/8/5 4:50:19
小白程序员轻松掌握大模型进阶:Agentic RAG 让你的 RAG 系统回答更准确! 本文深入探讨了传统 RAG 系统的瓶颈,即缺乏对检索过程的决策能力。提出了 Agentic RAG 的解决方案,通过引入判断-检索-验证-迭代-生成的闭环流程,有效提升回答准确率。文章详细解析了五个关键决策点:意图路由、查询重构、多路召回… 2026/8/5 9:36:58
Unity游戏马赛克消除终极指南:UniversalUnityDemosaics完全使用手册 Unity游戏马赛克消除终极指南:UniversalUnityDemosaics完全使用手册 【免费下载链接】UniversalUnityDemosaics A collection of universal demosaic BepInEx plugins for games made in Unity3D engine 项目地址: https://gitcode.com/gh_mirrors/un/UniversalUn… 2026/8/5 9:36:58
图标一致性崩塌危机,如何用Prompt Engineering+微调工作流重建品牌视觉资产库,7步落地手册 更多请点击: https://codechina.net 第一章:图标一致性崩塌的根源诊断与影响评估 图标一致性崩塌并非视觉层面的偶然失序,而是设计系统、开发流程与协作机制多重断裂的外在表征。当同一应用中出现 SVG 路径不统一、语义命名冲突、尺寸单位混… 2026/8/5 9:36:58
2026年主流知识视频总结工具 成本维度实测对比,差距竟然这么大,多数用户选了同一款 简短结论 本次对比的五款主流知识视频总结工具各有适配场景,不存在绝对最优解。从成本和核心功能适配来看,自媒体做内容二次加工、职场整理会议/访谈、学生整理课堂知识,都能找到匹配选项。听脑AI更适合需要把音视频进一步整理成可复用内容的… 2026/8/5 10:44:27
TEMU店群自动化管理系统:C++级指纹伪装深度,连系统调用层都查不出 TEMU店群自动化管理系统:C级指纹伪装深度,连系统调用层都查不出 老店群人都有个体会:TEMU的批量抓取采集,是店群运营中最耗人力也最容易出错的环节。 采集竞品数据是店群运营的命脉。但各大平台的反爬系统越来越强,普… 2026/8/5 10:44:27
SQL语法实战大全:从CRUD到窗口函数与性能优化 1. 从“增删改查”到实战:为什么你需要一份SQL语法用例大全?如果你刚接触数据库,或者在工作中偶尔需要和数据库打交道,听到“SQL”这个词,第一反应可能就是“增删改查”。没错,SQL(Structured Q… 2026/8/5 10:44:27
Hotkey Detective:Windows热键冲突的终极侦探,快速定位“偷走“你快捷键的元凶 Hotkey Detective:Windows热键冲突的终极侦探,快速定位"偷走"你快捷键的元凶 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh… 2026/8/5 10:44:27
缓存设计核心原则:从策略选型到经典问题解决方案 1. 缓存设计的核心价值与挑战在任何一个处理数据请求的系统里,缓存都是一个绕不开的话题。它不像数据库那样负责数据的持久化存储,也不像业务逻辑层那样处理复杂的计算,但它的存在,却直接决定了系统的响应速度和用户体验的上限。简… 2026/8/5 10:44:27
从刚性到柔性:新型电力系统演进与关键技术解析 1. 项目概述:我们正在谈论一个怎样的系统? 聊到“电网”,很多人第一反应可能就是家里的电表、墙上的插座,或者偶尔看到的电线杆和铁塔。这没错,但太片面了。我干了十几年能源相关的工作,从现场运维到系统规… 2026/8/5 10:39:27
鸿蒙6.1 arkui.componentSnapshot组件截图坑:返回PixelMap不是dataURL 本文是「鸿蒙 6.1 API 23 开发坑系列」第 2 篇(ArkUI 桶第 2 篇)。本篇讲 ohos.arkui.componentSnapshot namespace(API 10,鸿蒙 6.1 API 23 基座)——组件截图三个方法 get/getSync/createFromBuilder。鸿蒙坑根因&am… 2026/8/5 0:26:31
20个P0级大模型本体概念,产品经理必看,收藏这份学习资料! 文章介绍了20个大模型本体概念,帮助产品经理在AI产品决策时,不再依赖模糊判断,而是基于精准认知。内容涵盖了模型分类、开源与闭源模型、本地与云端部署、基础模型与对话模型、推理模型、Token、上下文窗口、幻觉、温度参数、系统提示词、思维… 2026/8/5 0:26:31
支付宝体验技术部拆分!前端转型Agent全栈,小白程序员必收藏 支付宝体验技术部拆分,前端工程师转型Agent开发全栈。玉伯等专家主导的团队,曾开发Ant Design、AntV等知名开源项目,影响行业。AI技术推动智能Agent兴起,打破前端边界,需掌握大模型、智能体逻辑等能力。组织调整旨在灵… 2026/8/5 0:26:31
ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案 ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经从网易云音乐下载了心爱的歌曲&am… 2026/8/5 5:03:56
分布式配置中心选型实战:Nacos与Consul在创业场景下的对比 分布式配置中心选型实战:Nacos与Consul在创业场景下的对比工程导读:本文深入讨论 分布式配置中心选型实战:Nacos与Consul在创业场景下的对比 在生产工程实践中的核心落地方案。基于 分布式架构与微服务设计 视角,剖析实际痛点、架… 2026/8/5 7:15:00
MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案 MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案 【免费下载链接】MoneyPrinterPlus AI一键批量生成各类短视频,自动批量混剪短视频,自动把视频发布到抖音,快手,小红书,视频号上,赚钱从来没有这么容易过! 支持本地语音模型chatTTS,fasterwhisper,… 2026/8/5 6:23:51
【YOLOv11模型改进系列】08 数据增强的终极形态:用AutoAugment让YOLOv11自己学会“什么数据最有用” 08 数据增强的终极形态:用AutoAugment让YOLOv11自己学会“什么数据最有用” 老伙计,咖啡准备好了吗?上篇我们聊了Mosaic+MixUp的“混乱美学”,你肯定已经体会到,手动调数据增强策略就像给模型当保姆——每换一个数据集就要重新试一遍参数。 上周有个做工业质检的朋友找我… 2026/8/5 7:15:27
AI 智能电动窗帘电机高集成、低功耗 MOSFET 精准选型方案 随着 AIoT 与智能家居深度融合,智能电动窗帘电机对功率 MOSFET 提出新要求:微型化、高效率、逻辑电平驱动及静音运行。微碧半导体(VBsemi)基于先进的 Trench 和 SGT 工艺,为您提供覆盖 H桥驱动、电源管理及电机控制的完… 2026/8/4 8:25:47
AI 智能电动窗帘电机智能功率 MOSFET 完整选型方案 随着 AI 技术在智能家居中的普及(如语音控制、光线感应、场景联动),电动窗帘电机对功率 MOSFET 提出更高要求:高效率、低噪音、高集成度。微碧半导体(VBsemi)基于 SGT 及 Trench 工艺,为您提供覆… 2026/8/5 4:50:19