理性净化没有显示内存泄漏,运行时错误?
-
21-09-2019 - |
题
这可能不会出现像一个编程问题,但与代码固有的交易。
我有一个下面的一段测试码,它具有明显的错误状阵列索引超出范围,内存泄漏: -
#include "stdio.h"
#include "stdlib.h"
main()
{
int i;
char *ptr;
ptr = (char*)malloc(5);
for(i=0;i<10;i++)
{
ptr[i]=(char)i;
}
}
此代码建立在MS-2008的Visual Studio中。
我试图使用Rational Purify的(7.0版本),以确定我的代码运行时错误,内存泄漏。走向阅读有关如何在使用净化构建代码,下面我有东西在MSVS-2008项目的设置做了一些三分球后: -
1)禁止增量链路2)调试信息编译器标记为/紫
3)设置链接器选项 - 。“Basic运行时检查,以默认值
4)增加了一个额外的连接器选项/固定:。没有
5。)构建的配置是调试,没有优化启用。
然后,我建立和得到的exe。我用这个exe文件在运行净化,使其仪器相同。但在净化输出窗口运行/插装此exe,示出了没有关于内存泄漏错误,..等中存在的上述代码之后。
在净化输出窗口显示输出不同的二进制文件的(我的exe文件和其他一些系统DLL)它仪表加载,执行。但在输出,其中大约是我的exe文件显示的数据,没有错误消息。
我的感觉是我在给编译/链接选项,同时建设MS-VS 2008.or生成的可执行文件格式的exe不兼容/理解通过净化犯了一个错误?
1)什么可能是错在这里?更重要的是选择我可以同时建立的exe需要?
2)是我使用净化正确的,还是我失去了一些东西的过程?我怎样才能得到净化,以做运行时分析后显示在我的计划中的所有错误?
3)是否有任何其他工具(游离/商业授权),它可以detecl内存泄漏,结合的错误的阵列时,使用未初始化的指针,变量,内存损坏等。通过这样做的C代码的运行时间分析的。
抱歉稍长的邮件,但必须是清楚的。
感谢。
-AD
解决方案
疯狂地尝试很多事情后,阅读互联网上,我发现了SOLN。此
1)添加新的环境变量为:
名称= IBM_RATIONAL_PURIFY_ENABLE_SELECTIVE
谷= 1
2)除了MS我在OP提到的,低于所需设定Visual Studio项目设置 -
C / C ++ - >代码生成=运行时库 - >多线程调试/ MTD
和当u运行在净化可执行文件,你必须点击配置选择,选择你的EXE。
然后当u运行时,它应colelct所需错误相关的信息。
-AD