目录
最近做的项目,频频出现内存泄漏问题,感觉就像是老头疼,刚治好了这,那又犯了。
以下仅是对个人项目里的内存泄漏问题做个记录总结,并非系统性技术分享。
一、罗列项目中出现内存泄漏的地方
1.1 new delete
基本上只要new出来的内存,都已经delete掉了。但是还是出现了以下问题:
(1)异常场景分支忘记释放
但是还是有遗漏的:在一些小概率的异常场景分支,直接return结束了函数,但是忘记了delete掉函数内申请的内存。
(2)new type[] 与delete[]
申请内存时,是以new type[] 形式申请的内存,释放时需要使用delete[]才能释放彻底。
1.2 打开的文件未关闭
使用fstream读磁盘文件的时候,只打开了文件流,但是没有使用.close()函数关闭。
1.3 打开的磁盘路径没有关闭
使用opendir()打开文件夹路径,但是没有用closedir()函数关闭
14 调用的第三方接口,内部申请了内存,但是没有释放
有的第三方接口,内部申请了内存等资源,但是不会自动回收,所以还需要调用其对应的资源释放接口。如tensorRT的creatInferRuntime()、deserialize