内存检查工具CheckMemory实现思路
来源:百度文库 编辑:神马文学网 时间:2024/10/03 03:40:24
检查的使用也主要是对这些函数及其使用的内存指针的追踪
void * checkmem_malloc(size_t n, const char *fn, int line);
void checkmem_free(void* ptr, const char *fn, int line);
void * checkmem_realloc(void *ptr, size_t n, const char *fn, int line);
跟踪就需要用到hash,由一个hash表来维护追踪内存的变化情况。
当要查询时,打印hash表中需要的值。
比如
void *
checkmem_malloc(size_t n, const char *fn, int line)
{
void *ptr = NULL;
if ((n <= 0) || (fn == NULL) || (line <= 0)) {
printf("%s %d %s %d %ld\n\n", __func__, __LINE__,fn, line, n);
sleep(10);
}
if (checkmem_log == NULL) {
checkmem_log = checkmem_init();
if (checkmem_log == NULL) {
printf("%s %d fail to init checkmem_log handler\n\n", __func__, __LINE__);
return NULL;
}
}
ptr = ((void*)malloc(n));
if (ptr == NULL) {
printf("%s %d malloc error 0x%x\n\n", __func__, __LINE__,errno);
sleep(10);
} else {
checkmem_hash_add(checkmem_log, ptr, n, fn, line);
}
return ptr;
}
当需要检查内存使用情况通过命令将其打印出来。
在打印出的所有没有被释放的内存中,有些是属于正常的,即程序一启动就会被分配,且一直不被释放;另外还有一些内存是不断增加而不被释放的,对于这些内存就需要引起特别重视,它们很可能就是产生内存泄露的地方。通过这一工具检查,正常状况应该是经过一段时间的运行之后,内存就保持到一个比较稳定的状态,不再增加或减少。
void * checkmem_malloc(size_t n, const char *fn, int line);
void checkmem_free(void* ptr, const char *fn, int line);
void * checkmem_realloc(void *ptr, size_t n, const char *fn, int line);
跟踪就需要用到hash,由一个hash表来维护追踪内存的变化情况。
当要查询时,打印hash表中需要的值。
比如
void *
checkmem_malloc(size_t n, const char *fn, int line)
{
void *ptr = NULL;
if ((n <= 0) || (fn == NULL) || (line <= 0)) {
printf("%s %d %s %d %ld\n\n", __func__, __LINE__,fn, line, n);
sleep(10);
}
if (checkmem_log == NULL) {
checkmem_log = checkmem_init();
if (checkmem_log == NULL) {
printf("%s %d fail to init checkmem_log handler\n\n", __func__, __LINE__);
return NULL;
}
}
ptr = ((void*)malloc(n));
if (ptr == NULL) {
printf("%s %d malloc error 0x%x\n\n", __func__, __LINE__,errno);
sleep(10);
} else {
checkmem_hash_add(checkmem_log, ptr, n, fn, line);
}
return ptr;
}
当需要检查内存使用情况通过命令将其打印出来。
在打印出的所有没有被释放的内存中,有些是属于正常的,即程序一启动就会被分配,且一直不被释放;另外还有一些内存是不断增加而不被释放的,对于这些内存就需要引起特别重视,它们很可能就是产生内存泄露的地方。通过这一工具检查,正常状况应该是经过一段时间的运行之后,内存就保持到一个比较稳定的状态,不再增加或减少。
内存检查工具CheckMemory实现思路
能邦敏感审查工具(可以实现对机器上敏感数据的检查) 1.0 简体中文特别版
一种检查内存泄漏的方法
中文分词的实现思路
中文分词的实现思路
内存加速器 优化大师整理工具妙用(图)
内存不能为read修复工具
内存加速器 优化大师整理工具的妙用
如何用好Windows7的兼容性检查工具
Liferay的CAS SSO实现思路
能邦敏感审查工具(可以实现对机器上敏感数据的检查) 1.0 简体中文特别版 - 软件下载交流 - 软件应用技术交流区 - 华军软件园论坛 --欢迎大家! - Powered by Discuz!
C Memory Scavenger(C、C++内存检测、收集工具)
内存不能为read修复工具下载1
内存不能为read修复工具下载2222222
内存不能为read修复工具下载123
SweepRAM – Firefox3 内存释放工具 - 小众软件
盆盆的博客 : Windows内存管理机密 揭穿内存优化工具的骗局
使用工具类实现通用分页处理
实现GTD的四种工具
水滴石穿C语言之代码检查工具PC
水滴石穿C语言之代码检查工具PC-Lint
网页减肥必备:检查网页文件大小的工具汇总
内存
【高分请教】 实现海量搜索给点思路,来皆都有分!