未初始化的变量可能有不确定的值,如this回答一个较早的问题指出。有没有一种方法可以将这种不确定的数据指定为重复 0xDEADDEAD
?不确定的数据显然是特定于编译器的,但最好将其强制为易于识别的内容。
是否存在允许这样做的现有内存泄漏/损坏检测库?在某些情况下,重载 new
似乎是一种解决方案,但我不想自己深入研究这种技巧。
问题是不确定的值通常会导致代码的未定义行为,并且很少发生运行时错误,因此,例如,如果我忘记了 memset()
,我想指出在我的代码中的某个地方。甚至随机化不确定的值也可以作为测试平台。
如果这不可能,是否有更好的方法来解决问题?
最佳答案
以下是生成高质量 C 代码的一些指南:
- 创建/使用有助于避免内存错误(和其他类型的错误)的编码指南。网上有很多例子。最好的方法是查看 5 或 6 并将其编译成一个,只保留适合您需要的内容。
- 使用代码审查/检查来查找错误并检查是否遵守编码指南。代码审查是发现工具无法检测到的错误的最佳方法之一。代码审查对于初学者/中级程序员来说尤为重要,因为它会增加您的学习曲线,无论是您审查其他人编写的代码还是您被审查时。
- 使用可以自动运行的测试用例测试您的代码。
- 使用 valgrind 等工具查找多种类型的错误。
关于c++ - 是否可以出于调试目的在 C/C++ 中定义/扰乱不确定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10860220/