为了内存管理单元能够很好的接到其他模块里面去,我把内存管理单元用一个静态变量的LifeHolder来管理自身的生命期(这个LifeHolder作为的是函数的静态变量,而不是全局的静态变量,因为函数的静态变量是在函数第一次调用的时候构建,这点是必须保证的,而全局的静态变量将不能确定和其他静态变量的构建顺序)。随着引擎里面加的东西多了,使用一个自身会动态分配内存的静态变量(比如vector)的时候,会误报内存泄漏,原因就是内存管理单元在Dump leak时候先于其他的静态变量。这个就蛋疼了。折腾了半天,Dump部分必须拿到所有的静态变量、全局变量析构的后面去。为了达到这个,用了一个DLL,因为Load Dll和进程终止的时候会给DLL分别发 DLL_PROCESS_ATTACH 和 DLL_PROCESS_DETACH,Attach时候取出要Dump的函数地址,Detach时候调用这个函数Dump Leak信息。
阅读(2285) | 评论(0) | 转发(0) |