2.3分析日志文件

日志文件memwatch.log中包含的信息主要有以下几点:
*   测试日期
*   状态搜集器的信息
*   使用MemWatch的输出函数或宏(如TRACE等)的信息。

*   MemWatch捕获的错误信息

*   内存使用的全局信息统计,包括四点:
1)分配了多少次内存
2
)最大内存使用量
3)分配的内存总量
4
)为释放的内存总数

MemWatch捕获的错误记录在日志文件中的输出格式如下:
message: <sequence-number> filename(linenumber), information

 

2.4 注意事项

mwInit()mwTerm()是对应的.所以使用了多少次mwInit(),就需要调用多少次

mwTerm()用于终止MemWatch.

 

如果在流程中捕获了程序的异常中断,那么需要调用mwAbort()而不是

mwTerm()。即使有显示的调用mwTerm()mwAbort()也将终止MemWatch

 

MemWatch不能确保是线程安全的。如果你碰巧使用Wind32或者你使用了线程,作为2.66,是初步支持线程的。定义WIN32或者MW_PTHREADS以明确支持线程。这会导致一个全局互斥变量产生,同时当访问全局内存链时,MemWatch会锁定互斥变量,但这远不能证明是线程安全的。

 

3 结论

     MemWatch的使用可以得知,无法用于内核模块。因为MemWatch自身就使用了应用层的接口,而不是内核接口。但是,对于普通的应用层程序,我认为还是比较有用,并且是开源的,可以自己修改代码实现;它能方便地查找内存泄漏,特别是提供的接口函数简单易懂,学习掌握很容易,对应用层程序的单元测试会较适用。