Rational Purify使用

本文介绍了在C++编程中常见的内存管理问题及内存泄漏类型,包括COM接口漏洞、堆内存泄露等,并提供了相应的错误代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

下面的代码集中显示了上述问题的典型例子: 1 #INCLUDE 2 USING NAMESPACE STD; 3 INT MAIN(){ 4 CHAR* STR1="FOUR"; 5 CHAR* STR2=NEW CHAR[4]; //NOT ENOUGH SPACE 6 CHAR* STR3=STR2; 7 COUT<1、 COM: COM API/INTERFACE FAILURE COM操作失败。在每一个COM API或COM接口调用后,PURIFY都会检查HRESULT,如果它的值不是标明操作成功的S_OK,就会显示此错误。 2、 HAN: INVALID HANDLE 无效句柄。在期望出现句柄的地方出现了一个非句柄的值或者是一个错误类型的句柄。 3、 ILK: COM INTERFACE LEAK COM接口漏洞。当一个COM接口的引用总数大于1时,会出现此提示。 4、 MLK: MEMORY LEAK 堆内存泄露。指内存块中没有任何内容或者内存块没有被任何指针引用。以下两种情况都会出现此错误提示。 A、在函数中分配了本地内存,但在退出函数的时候没有FREE。 B、内存块的指针被清除或改变或不在其作用域内。 IF THE SECTION OF THE PROGRAM WHERE THE MEMORY IS ALLOCATED AND LEAKED IS EXECUTED REPEATEDLY, YOU MIGHT EVENTUALLY RUN OUT OF SWAP SPACE, CAUSING SLOW DOWNS AND CRASHES. THIS IS A SERIOUS PROBLEM FOR LONG-RUNNING, INTERACTIVE PROGRAMS. 5、PAR: BAD PARAMETER 程序在调用WIN32API或者C运行时常规函数时传递了一个错误的参数。 6、 UMC: UNINITIALIZED MEMORY COPY 将一个未初始化的值从一个内存区拷贝到另外一个。 7、 UMR: UNINITIALIZED MEMORY READ 读取未初始化的内存块的值。三、 兰色提示信息 1、 BOX: MESSAGEBOX 如果程序中用到了MESSAGEBOX()或者MESSAGEBOXEX()两个函数,PURIFY运行结束后就会出现此项提示信息。 2、 EXC: CONTINUED EXCEPTION 3、 EXH: HANDLED EXCEPTION 4、 EXI: IGNORED EXCEPTION HIU: HANDLE IN USE 句柄被分配后,没有释放。 6、 MAF: MEMORY ALLOCATION FAILURE 内存分配失败。 7、 MIU: MEMORY IN USE 正要分配的堆内存上已经有指针了。 8、 MPK: POTENTIAL MEMORY LEAK 堆内存可能泄露。在内存块的开始没有指针,但在块的内部看起来有指针指向。 9、 ODS: OUTPUTDEBUGSTRING 程序中调用了OUTPUTDEBUGSTRING函数。


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值