野指针
参考:https://mp.weixin.qq.com/s/DRrTG7ZRCYzp1cvPcGQBhA
1、简介
在 C 和 C++ 这类对内存操作有着精细控制的编程语言里,指针就像一把锋利的双刃剑,用得好能极大提升程序性能与灵活性,可一旦出错,就会带来各种棘手问题,其中野指针就是一个典型的 “麻烦制造者”。野指针,简单来讲,就是指向非法内存地址的指针。它指向的位置充满不确定性,可能是随机的,也可能是错误的,甚至是未被明确界定的。
这就好比你手持一张错误的地图,上面标注的地点要么不存在,要么是已经废弃的地方,你依据这张地图去寻找目的地,结果必然是徒劳无功,还可能陷入困境。与 NULL 指针不同,NULL 指针明确表示不指向任何有效内存,而野指针则像是在内存的 “迷宫” 里迷失了方向,指向一个连它自己都不清楚的地方,对程序的正常运行构成了潜在威胁 。要知道,栈内存在函数结束时会被自动释放,此时返回的指针就变成了 “无家可归” 的野指针。接下来,我们就深入探讨一下访问野指针会给程序带来哪些严重问题 。
在 C 和 C++ 等编程语言中,指针是一个强大但也容易出错的特性。野指针,简单来说,就是那些指向了未知、非法或者已经释放的内存地址的指针 。它就像是一个迷路的导航,虽然还在指示方向,但这个方向却毫无意义,甚至可能把你带向危险的地方。