内存泄漏理解

20200917
----------------------------------------------------------------------
1、内存泄漏:
栈和堆的相似之处在于,他们的内存空间都是在程序运行时得到申请分配的。不过,在内存的使用方法上,二者存在些许不同。栈中对数据进行存储和舍弃(清理处理)的代码,是由编译器自动生成的,因此不需要程序员的参与。使用栈的数据的内存空间,每当函数被调用时都会得到申请分配,并在函数处理完毕后自动释放。与此相对,堆的内存空间,则要根据程序员编写的程序,来明确进行申请分配或释放。
      根据编程语言的不同,对堆用的内存空间进行申请分配和释放的程序的编写方法也是多种多样的。C语言中是通过malloc()函数来进行申请分配、通过free()函数来释放的。而C++中则是通过new运算符来申请分配、通过delete运算符来释放的。无论是C语言还是C++,如果没有在程序中明确释放堆的内存空间,那么即使在出来完毕后,该内存空间仍会一直残留。这个现象称为内存泄漏(memory leak),它是令C语言及C++的程序员们十分头疼的一个bug(程序的错误)。如果内存泄漏一直存在的话,就有可能会造成内存不足而导致宕机。这就好比,如果水龙头一直嘀嗒嘀嗒的漏水,那么一晚上的时间水桶就可能会装满并溢出。

posted on 2020-11-11 17:09  everyday新起点  阅读(137)  评论(0)    收藏  举报