内存状态比较
来源:互联网 发布:mac yy进入频道失败 编辑:程序博客网 时间:2024/06/06 00:26
本主题适用于:
Visual Studio 版本
Visual Basic
C#
C++
J#
速成版
否
否
本机
否
标准版
否
否
本机
否
专业团队版
否
否
本机
否
定位内存泄漏的另一种技术涉及在关键点对应用程序的内存状态拍快照。CRT 库提供一种结构类型 _CrtMemState,您可用它存储内存状态的快照:
_CrtMemState s1, s2, s3;
若要在给定点对内存状态拍快照,请向 _CrtMemCheckpoint 函数传递 _CrtMemState 结构。该函数用当前内存状态的快照填充此结构:
_CrtMemCheckpoint( &s1 );
通过向 _CrtMemDumpStatistics 函数传递 _CrtMemState 结构,可以在任意点转储该结构的内容:
_CrtMemDumpStatistics( &s1 );
该函数输出如下样式的转储的内存分配信息:
0 bytes in 0 Free Blocks.
0 bytes in 0 Normal Blocks.
3071 bytes in 16 CRT Blocks.
0 bytes in 0 Ignore Blocks.
0 bytes in 0 Client Blocks.
Largest number used: 3071 bytes.
Total allocations: 3764 bytes.
若要确定代码中某一部分是否发生了内存泄漏,可以在该部分之前和之后对内存状态拍快照,然后使用 _CrtMemDifference 比较这两个状态:
_CrtMemCheckpoint( &s1 );
// memory allocations take place here
_CrtMemCheckpoint( &s2 );
if ( _CrtMemDifference( &s3, &s1, &s2) )
_CrtMemDumpStatistics( &s3 );
顾名思义,_CrtMemDifference 比较两个内存状态(s1 和 s2),生成这两个状态之间差异的结果(s3)。在程序的开始和结尾放置 _CrtMemCheckpoint 调用,并使用 _CrtMemDifference 比较结果,是检查内存泄漏的另一种方法。如果检测到泄漏,则可以使用 _CrtMemCheckpoint 调用通过二进制搜索技术来划分程序和定位泄漏。
- 内存状态比较
- 内存状态查看
- 内存状态查询函数
- Linux显示内存状态
- 获取内存状态
- 策略模式 状态模式 比较
- 内存泄露检测工具比较
- 内存检测工具比较
- 内存泄露检测工具比较
- 内存泄露检测工具比较
- 内存泄露检测工具比较
- 内存泄露检测工具比较
- 内存泄露检测工具比较
- 内存泄露检测工具比较
- 内存管理 比较全
- 内存泄露检测工具比较
- 内存泄露检测工具比较
- 内存泄露检测工具比较
- HttpContext对象和RewritePath方法
- 如何:在内存分配编号上设置断点
- 工作方法------如何高效地工作
- 人人都应该拥有颗感恩的心
- 用Fat Jar 插件打包可执行jar文件
- 内存状态比较
- 让Flash全屏and设为首页和收藏夹功能---谭石南
- Memcache存储session,修改tomcat源码,实现全站二级域名session共享
- Struts2整合JFreeChart图表说明
- ARM-WinCE5.0-寄存器读写工具(转载 )
- 盗QQ号详解
- ARM-WinCE6.0-寄存器读写工具(转载)
- 尝试安装maemo开发平台
- 消息钩子函数入门篇(1)--基础知识