标签:优先 review 退出 源码 设备 call style 内存 man
目前C&C++ 动态分配内存都是使用malloc-free new-delete
所以第一个方法是 每次分配内存时先记录下来 释放时记录下来 这样一对比就出来。。。or malloc记录地址 free 去掉记录地址
最后剩下的就是 没有释放的。。。。
第二个方法就是hook malloc了
http://www.gnu.org/savannah-checkouts/gnu/libc/manual/html_node/Hooks-for-Malloc.html
再就是 http://jemalloc.net/jemalloc.3.html#arena.i.chunk_hooks
第三个:malloc是一个weak symbol,所以直接写一个malloc同名函数就行,同名函数中可以通过符号 __libc_malloc,这个符号直接指向malloc的实现部分
--------------->GCC wrap
ld中有一个选项 –wrap,当查找某个符号时,它优先先解析__wrap_symbol, 解析不到才去解析symbol。
好像对C++的new不起作用。
extern void *__libc_malloc(size_t size); void* malloc (size_t size) { // do your stuff { } // call the original malloc return __libc_malloc(size); }
再就是mtrace 了
再就是对比之前版本---看下这个版本改了什么了。。。再或者就是看覆盖率,那些没有跑到,然后review代码了。。。
还要啥方法?????????????????????
聊一聊内存泄漏 ------在valgrind检查不出来时怎么办??
标签:优先 review 退出 源码 设备 call style 内存 man
原文地址:https://www.cnblogs.com/codestack/p/12989917.html