什么是内存泄漏?防止内存泄露的方法?

2022-01-21 170 0

什么是内存泄漏?

动态分配内存所开辟的空间,在使用完毕后未手动释放,导致一直占据该内存,即为内存泄漏。

内存泄漏的分类

1.堆内存泄漏

堆内存泄漏指的是程序运行中根据需要通过malloc,realloc,new等从堆中分配的一块内存,完成后没有调用对应的free,delete进行释放,或者是程序错误导致这部分内存没有被释放,这块内存将不会被使用,就产生了堆内存泄漏。

2.系统资源泄漏

主要是指程序使用系统分配的资源,比如Bitmap,handle,socket等没有使用相应的函数释放掉,导致系统资源浪费,严重可导致系统效能降低,系统运行不稳定。

3.未将基类的析构函数定义为虚函数

当基类指针指向子类对象时,如果基类的析构函数不是virtual,那么子类的析构函数将不会被调用,子类的资源没有正确的释放,因此造成内存泄漏。

如何防止内存泄漏?

malloc,free要配套使用,对指针赋值的时候应该注意被赋值的指针是否需要释放;使用的时候记得指针的长度,防止越界;使用智能指针。

相关文章

简述 private、 protected、 public、internal 修饰符的访问权限
new和malloc的区别
堆和栈的区别?
构造函数为什么一般不定义为虚函数?而析构函数一般写成虚函数的原因 ?
什么情况下会调用拷贝构造函数?
介绍下抽象类、接口类、聚合类?

发布评论