博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Google memchek 内存检测
阅读量:4212 次
发布时间:2019-05-26

本文共 920 字,大约阅读时间需要 3 分钟。

最近在看了一下内存检测,在可以找到,文章有源码和test,简单的几句介绍,刚开始没怎么看懂,自己根据使用说明用了下立马就能上手,显示结果最好用cmd调用生成的exe,能清楚打印mem leaking的情况。

主要代码:

bool mc_checkmem(){

bool memLeaked=false;
for(int i=0;i<MC_HASHTABLESIZE;++i){
mc_block_node_t* ptr=pTable[i];
if(ptr==NULL){
continue;
}
memLeaked=true;
while(ptr){
printf("Leaked object (size %u ",ptr->size);
#ifdef MC_ADDRESS
printf("at 0x%p ",(ptr+1));
#endif
#ifdef MC_FILENAME
printf("in %s",ptr->file);
#endif
#ifdef MC_FUNCTION
printf(":%s()",ptr->func);
#endif
#ifdef MC_LINE_NUMBER
printf(":%d",ptr->line);
#endif
printf(")\n");
ptr=ptr->next;
}
}
return memLeaked;
}

程序通过建立以个内存块的hash表,来记录内存的使用情况,并打印出来,结果很详细。本人建立一个DLL并加入了memcheck程序。DLL中内存泄漏代码如下:

double MyMathFuncs::Divide(double a,double b)

{
int* c=new int[10];
//printf("main():b==0x%p\n",b);
for(int i=0;i<10;++i){
c[i]=i;
}
if(b == 0)
{
throw new invalid_argument("b cannot be zero");
}
return a / b;
}

结果为:

程序清楚打印出是怎么分配内存,分配内存的大小,以及位置和内存泄漏的情况。

转载地址:http://bnkmi.baihongyu.com/

你可能感兴趣的文章
Oracle Heap size XXK exceeds notification threshold (2048K) 解决方法
查看>>
Oracle Gloden Gate 系列三 -- GG 支持与不支持的对象类型与操作 说明
查看>>
PowerDesigner PDM 生成SQL脚本 去除 引号 方法
查看>>
Oracle Golden Gate 系列四 -- GG 安装 与 卸载 理论知识
查看>>
关系数据库 范式(NF: Normal Form) 说明
查看>>
Oracle Golden Gate 系列五 -- GG 使用配置 说明
查看>>
Oracle Golden Gate 系列六 -- 11gR2 Ora2Ora 单向复制 GG 示例
查看>>
Oracle Golden Gate 系列七 -- 配置 GG Manager process
查看>>
ORA-00600:[32695], [hash aggregation can't be done] 解决方法
查看>>
Oracle SQL中使用正则表达式 执行报ORA-07445 [_intel_fast_memcpy.A()+10] 错误
查看>>
Oracle TABLE ACCESS BY INDEX ROWID 说明
查看>>
ORA-00600 [kmgs_parameter_update_timeout_1], [27072] ORA-27072 解决方法
查看>>
Oracle 11g alert log 新增消息 opiodr aborting process unknown ospid (1951) as a result of ORA-28 说明
查看>>
Linux Context , Interrupts 和 Context Switching 说明
查看>>
《Oracle数据库问题解决方案和故障排除手册》终于发售了
查看>>
Oracle alert log ALTER SYSTEM SET service_names='','SYS$SYS.KUPC$C_...' SCOPE=MEMORY SID='' 说明
查看>>
Oracle latch:library cache 导致 数据库挂起 故障
查看>>
Openfiler 配置 NFS 示例
查看>>
Oracle 11.2.0.1 RAC GRID 无法启动 : Oracle High Availability Services startup failed
查看>>
Oracle 18c 单实例安装手册 详细截图版
查看>>