繁体   English   中英

如何检测未初始化的内存(C ++,Windows,VS2005)?

[英]How to detect uninitialized memory (C++, windows, VS2005)?

我正在寻找Windows的内存调试器,它将能够调试未初始化的内存。

有一个代码段(C ++):

class Temp{
public:
 Temp(double d) : m_double(d){};

 double m_double;
 float m_float;
};

int _tmain(int argc, _TCHAR* argv[])
{
 double temp;
 std::cout << temp <<std::endl;

 Temp temp2(2.0);
 std::cout << temp2.m_double <<std::endl;
 std::cout << temp2.m_float <<std::endl;

 int num1, num2;
 num1 = num2 + 1;

 return 0;
}

理想的功能:

  • 动态内存调试器,不是静态分析工具
  • 图形用户界面
  • 自由
  • 与VS2005集成
  • 使用简单

尝试使用:

  • Rational Purify v.7.0.0.0内部版本:6274
  • 内存验证器v.5.12
  • cppcheck-在给定的代码片段上运行良好,但在真正的大型项目中却无济于事

UPD:似乎没有办法在释放模式下找到未初始化的内存,而通过动态内存调试器打开了优化功能。 要在调试模式下尝试。

过去,我使用Purify解决各种内存问题,并且效果很好。 缺点是它是$$$$。

如果可以选择的话,后端的Linux端口使用valgrind也是一个很好的工具。

我认为此问题与静态代码分析器更相关。 我从Visual Studio中看到这样的警告,在项目设置中具有最大警告级别,但是我不确定vs2005。

您也可以尝试使用有关代码分析器的此问题中的一些工具。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM