【问题标题】:What is a Windows equivalent of CppCheck?什么是 CppCheck 的 Windows 等效项?
【发布时间】:2012-12-27 20:51:36
【问题描述】:

我有一个极端的问题。

我已经在游戏上工作了大约两年(20000+ 行代码),最近我注意到大量的内存泄漏。问题是我无法追踪每一个,因为我的游戏太大了......

我四处搜索并注意到 CppCheck 在我的情况下会很有用,但问题是由于我使用的是 windows,所以我不能使用 CppCheck(仅适用于 linux)。

我想知道是否有一个库或插件与 CppCheck 的 windows 等效,或者是否有一种在 windows 上使用 CppCheck 的方法。

我提出的所有可能性,以及其他问题的解决方案(例如对 std::deque 使用智能指针等)意味着我的程序很小或更合适:重写我的整个程序,我 - 真的 - 不想做的事情......

IDE:代码块 10.05

编译器:MinGW 3.81 GCC 4.4.1

【问题讨论】:

  • 这就是为什么你从智能指针开始,而不是从原始指针开始,在你的程序有 20000 行代码之后发现你需要智能指针。
  • @Molma:任何像这样的工具的问题在于它不是很精确——它可能能够捕获 一些 内存泄漏,但它不太可能能够捕捉到所有。我建议的是另一种方法:开始注释代码拥有内存中的哪些指针,哪些只是引用它。如果有任何循环引用,请特别注意。然后,一一开始使用shared_ptr,并使用release 转换为(拥有)指针,以保持程序可编译。不断重复,直到消除泄漏或不再有原始指针。
  • @SethCarnegie 当我第一次开始从事这个项目时,我对智能指针或内存泄漏一无所知。直到最近我才注意到我的程序存在大量泄漏(最近我一直致力于提高速度)。因为我是自学成才的,所以我把这个疯狂的错误归咎于自己......
  • @Molma 您需要做的是查找每个new 并在您的源中找到deleted 的位置和时间。如果这确实是您的第一个项目,那么随着知识的增长,不期望重写大部分内容是不合理的。

标签: c++ memory-leaks cppcheck


【解决方案1】:

CppCheck 也适用于 Windows(查看 SourceForge 上的下载)。 CppCheck 只是一个静态检查工具(它会分析您的源代码以发现一些潜在问题)。为了找到真正的内存泄漏,可能需要使用一些实际运行代码的调试工具(例如,查看 Google 的 Dr. Memory)。

【讨论】:

  • 我目前正在 Dr. Memory 下运行我的程序,看看我是否可以到达任何地方。
猜你喜欢
  • 2011-12-02
  • 2011-02-10
  • 2011-10-16
  • 2011-03-19
  • 2021-08-07
  • 2023-03-31
  • 2012-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多