如何在Linux上的C中找到未初始化的变量?

时间:2013-10-21 17:31:04

标签: linux c

我的C源代码有许多未初始化的变量。代码在RHEL 6.4操作系统上。

有没有办法找到所有未初始化的变量?

2 个答案:

答案 0 :(得分:10)

从数学意义上来说,找到所有是不可能的(至少没有误报)。但是,有一些工具可以帮助找到其中一些:

  • 启用编译器警告。使用gcc,这将是-Wuninitialized-Winit-self-Wmaybe-uninitialized。请注意,您需要尝试不同级别的优化;您将在不同的-O级别获得不同的警告。请注意,-Wmaybe-uninitialized(顾名思义)可能会出现误报。
  • 对于未初始化的内存(如malloc等),您可以使用valgrind。这实际上需要运行程序。
  • 静态检查器,例如splint。 (感谢Andy Lester提出此建议。)

答案 1 :(得分:7)

假设您正在使用GCC,请使用-Wuninitialized编译您的程序。最好总是用-Wall编译,因为使用C,程序员需要他能得到的所有帮助。