C++中野指针

Posted 编程大师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中野指针相关的知识,希望对你有一定的参考价值。

        我一直在思考在求职面试中,我们是否要回答得很前面才能让面试官满意,或者说见人说人话,见鬼说鬼话,可以不回复得很全面,但是回答到让人舒服,顺便吹一下好话。有时候,坐在你对面的面试官水平都未必比你好的,如果你回答的非常具体细致或者深入,那么我觉得达到的效果可能不是那么好。面试官会认为你在装逼。

        C++中的野指针,指针问题是每个程序员止步的重要门槛,初学者会认为指针问题难以理解,我当初也是如此。甚至于有的人当了十多年的程序,敲了十多年的代码,都还不清楚指针的用法和逻辑。


        我觉得如果有人问起野指针的作用,这么答就可以。首先,造成野指针的问题可能有三个原因:

  1. 指针创立后没有被初始化,直接去调用它。内存为0xcccccccc ,当字符串看就是 “烫烫烫烫……”,所以很多时候如果看到内存是这样的一定要引起重视。

  2. 释放指针后没有置为NULL。这是很多人的通病,因为大都数人觉得释放掉指针就完事了,殊不知这块指向还是不明,所以一个优秀的程序员释放完后要置为NULL,同时调用时加if判断

     如果你能回答第一点和第二点,我觉得这个回答已经令很多面试官满意了,而第三点视情况去回答。为什么我强调内存为0xcccccccc呢,因为我面试过windows开发工程师,有个面试官就问我这段表示的含义,他可能不会直接向你提问野指针的作用,但是你要从这个细节扯到野指针。在windows的debug调试中,会很多段代码提示,而这个提示往往指引着你去解决问题,比如蓝屏,crash等一系列问题。

    指针的用法考验着每一个C和C++程序员,Java可能不会有这个概念,但是作为一个偏向底层的人员来说,指针与内存是考研你技术功底的关键。毫不迟疑的说,如果你选择C++方向,指针的使用必然是你技术好坏的标尺。

    新手不重视内存的创建和释放,对于指针,不会想着去判断,心中没有对这块内存管理,可能觉得程序不crash就好了,所以埋下了一些坑。如果你想要规避这些问题,除了知道野指针的产生和消亡之外,建议你还要作一些管理检测,比如析构的时候或者一些框架内自动对指针进行判断。

    而智能指针的出现就是为了规避这个问题。如果追问你野指针的规避办法,能够把智能指针的原理以及作用回答得详细一些,那么会有加分的。

以上是关于C++中野指针的主要内容,如果未能解决你的问题,请参考以下文章

c++野指针小结

C++ 空指针和野指针

c++野指针 之 实战篇

C++ 野指针规避指南!

野指针问题

区分零值指针,NULL指针,野指针