发现问题
不知从何时,我的网易云一直在启动后崩溃
今天心血来潮,决定一探究竟
注意到,启动之后,本地音乐旁边的圈圈一直在转
打开任务管理器,发现网易云在十秒钟之内吃了3.4个G内存,最后吃到3.8个G的时候崩溃了

P1 任务管理器yyds
我立刻注意到,网易云是32位应用,内存极限是4G,于是可以判断是内存泄露的问题
内存是怎么泄露的?
打开VS进行调试,与刚刚的情况相同,内存吃满后报错

P2 报错
查看输出,发现一堆的std::bad_alloc,这个时候学过C的都应该知道是程序malloc的内存不够导致的,而报错的,正是网易云ID3模块,看来是文件读取错误无疑了

P3 内存泄漏
神秘的测试文件
向上继续翻,发现了关键信息,所有的报错都指向了同一个文件夹 taglib-1.12/test/data

P4 目标锁定
这个文件夹是我最近在写taglib的项目时从SourceForge上下的taglib源码,而test里面存放的都是taglib的测试文件(debug用),data里面的歌曲都是些为了故意为难程序而放的
随后,我尝试了删除文件夹,果然,文件夹正在被占用,到此为止已经真相大白了,网易云读taglib的测试文件发生错误,于是一直while循环读取发生错误的文件,导致内存迅速吃满,触碰到32位程序4G的极限之后崩溃

P5 文件夹被占用
后记
大公司的屎山代码实在可怕
各位写C/C++的时候一定要做好内存管理,不然可以和我一样转投Node,Python,C#等有垃圾回收器的语言(doge)
幸亏网易云是32位的,不然会直接吃满我的内存直接把系统都卡死(长叹一口气)