算法面试之CC编程的三大难解

C++是世界范围内最受欢迎的主流编程语言之一,在各行业发挥了重要的作用。

C++开发难度较大,自由性很高,很多问题都需要开发者自己来管理,其中就有三大难解问题让程序猿脱发最多。

01三大难题之一

什么是内存泄漏?

内存泄漏(MemoryLeak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。

内存泄漏

怎么导致内存泄漏?

内存申请了,但是没有及时释放,就导致内存泄漏。

内存泄漏

怎么解决内存泄漏?

1、代码层面:内存申请与释放要匹配

new与delete

new[]与delete[]

malloc与free

2、工具检测

vs等有性能分析工具可以检测内存泄漏。

(这些工具是怎么做的,怎么知道内存泄漏了,后面我会文章分析,非常有意思的。)

02三大难题之二

什么是野指针?

野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)指针变量在定义时如果未初始化,其值是随机的,指针变量的值是别的变量的地址,意味着指针指向了一个地址是不确定的变量,此时去解引用就是去访问了一个不确定的地址,所以结果是不可知的。

怎么导致野指针?

1、指针创建未初始化;

2、指针释放未置空;

3、访问越界。

怎么解决野指针?

1、创建就初始化,这个对于所有的变量都是需要这么做的,否则随机值导致的问题真是很难定位,会导致你的功能时好时坏;

2、指针释放就置空;

deletep;

p=nullptr;

3、访问越界需要程序员自己控制,但是一般情况下访问越界会崩溃。

03三大难题之三

什么是死锁?

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁

死锁

怎么导致死锁?

资源竞争,互相等待。

怎么解决死锁?

1、注意加锁顺序;

2、死锁检测。




转载请注明:http://www.aierlanlan.com/grrz/4647.html

  • 上一篇文章:
  •   
  • 下一篇文章: