Chinaunix首页 | 论坛 | 博客
  • 博客访问: 174239
  • 博文数量: 43
  • 博客积分: 827
  • 博客等级: 准尉
  • 技术积分: 487
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-26 19:19
文章分类

全部博文(43)

文章存档

2015年(1)

2014年(1)

2013年(5)

2012年(36)

我的朋友

分类: C/C++

2012-11-23 16:51:22

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

阅读(2257) | 评论(0) | 转发(0) |
0

上一篇:环太湖记

下一篇:移植一个工具的YY

给主人留下些什么吧!~~