【嵌入式】让人又爱又恨的“指针”

调试bug遇到了野指针,无语凝噎,记录

【嵌入式】让人又爱又恨的"指针"

1.我到底是个啥?

1.1【解释一下】

回顾一下, 什么是指针?指针在内存中实际上是一个无符号整数(unsigned int),但是它的值被赋予特殊的解释:表示变量或函数的地址。所以才被形象地称为"指针",就好像指向谁家似的。

1.2【谨慎使用】

在使用指针前, 都必须先让它指向有意义的, 并且允许由程序使用的实体------数据和代码

2.毒舌"野指针"

野指针就像"肉里的刺, 酱里的蛆" 一般:一个野指针就足以毁掉整个系统, 而且极其隐蔽, 很难通过症状来找出是哪里存在野指针,

某个指针变量的值因为某种原因,指向了非法的范围,使其"枪口" 乱指

  • 程序逻辑错误
  • 数组越界
  • 堆栈溢出
  • 指针没有合理的初始化
  • 对缓存处理不当
  • 多任务环境中的紊乱条件

以上操作都有可能制造出野指针。若使用野指针去读取或修改内存, 则被读取或修改的位置是不可预料的。

使用野指针去 读取内存------------读回来的都是乱掉的数据

使用野指针去 修改内存------------破坏未知用途的数据

这常常导致系统发生莫名其妙的功能紊乱, 严重时会使系统毫无征兆,没有理由地失控、死机。

相关推荐
夜猫逐梦1 小时前
【Lua】Windows 下编写 C 扩展模块:VS 编译与 Lua 调用全流程
c语言·windows·lua
_OP_CHEN1 小时前
数据结构(C语言篇):(十三)堆的应用
c语言·数据结构·二叉树·学习笔记·堆排序··top-k问题
量子炒饭大师2 小时前
收集飞花令碎片——C语言关键字typedef
c语言·c++·算法
cellurw3 小时前
Linux下C语言实现HTTP+SQLite3电子元器件查询系统
linux·c语言·http
..过云雨3 小时前
03.【Linux系统编程】基础开发工具1(yum软件安装、vim编辑器、编辑器gcc/g++)
linux·c语言·笔记·学习
青草地溪水旁3 小时前
Linux 高性能 I/O 事件通知机制的核心系统调用—— `epoll_ctl`
linux·c语言·c++
JasmineX-15 小时前
数据结构——顺序表(c语言笔记)
c语言·开发语言·数据结构·笔记
啟明起鸣6 小时前
【网络编程】从与 TCP 服务器的对比中探讨出 UDP 协议服务器的并发方案(C 语言)
服务器·c语言·开发语言·网络·tcp/ip·udp
番茄灭世神7 小时前
柔性数组与队列杂记
c语言
nightunderblackcat7 小时前
新手向:C语言、Java、Python 的选择与未来指南
java·c语言·python