使用 C++ 库时初始化一般会有个 Init 函数, 结束时会要求调用 DeInit 或 UnInit 这类的函数. 有时为了省事会忽略掉 DeInit 的调用, 今天在封装 DLL 对 2000 多个文件调用时出现了问题.
在对 2000 多个文件调用了 DLL 之后, 结果有 1.4G 的内存未释放. 一开始以为是跨 DLL 传字符串内存释放的问题, 结果尝试了各种方法去分配和释放内存. 用了一天的时间没有找到解决方法, 最后偶然加上了 DeInit 方法, 问题就解决了.
为了看下在调用 DeInit 但不释放字符串内存的情况下, 会有多少内存泄露, 在调用端把内存释放的函数去掉了试一下, 结果这样做只有 40MB 内存没释放..