作为一个程序员来说,内存是一个绕不过去的坎。虽然如今设备的性能都呈摩尔指数上涨,但是内存还是有限的,写代码时熟知每块内存,分配是回收再优化,是一个非常考验人的过程,而这个会直接影响到你整个项目工程。而面试中,如果说有个话题能考验面试官的水平,以及他和你引起的共鸣,那么内存绝对是一个最适合不够的东西,你可以跟他聊内存管理,内存泄露,内存优化等。涉及到这个,只要你能有点见解,那么level绝对是高级。今天就从最简单的几个方面来聊一聊内存泄露。

  1. 内存区

    如果有人问你这个问题,我觉得这么简短回答即可,就是堆,栈,自由存储区,全局/静态存储区和常量存储区。基本简单回答就好,如果你能在深入的话,就要根据你面试的岗位来简要阐述,比如当初我面试字节跳动的windows视频开发,会沟通交流一下windows的内存管理,windows实现按需调页的虚拟内存机制,这个就有点高级了。。。

  2. 内存泄露的几种方式

    这个可能网上有答案,就是常发性,偶发性,一次性,隐式内存泄露。但是我希望你能够阐述具体点,比如以下说法

    a.忘记释放内存, 没有delete掉,会造成内存泄露;

    b.野指针现象,已经释放内存,但未置空,会造成内存泄露;

    c.越界访问,比如数组越界,容器越界等;

    d.内存未初始化就引用;

    e.内存未分配成功就使用,比如在构造函数未成功就调用了,也会造成内存问题<