今天遇到了一例惯性问题。大家调用memset接口函数的时候,习惯性使用sizeof作为第三个参数,一般情况下,这样可以确保正确性。但是如果直接习惯性拿常数作为sizeof的输入,可能得不到期望的值。
char cmd[256];
memset( cmd, 0, sizeof( 256 ) );
[WARNING] (cwe=682, sizeofwithnumericparameter): Suspicious usage of ‘sizeof’ with a numeric constant as parameter., It is unusual to use a constant value with sizeof. For example, ‘sizeof(10)’ returns 4 (in 32-bit systems) or 8 (in 64-bit systems) instead of 10. ‘sizeof(‘A’)’ and ‘sizeof(char)’ can return different results.
从这个例子也可以看出,代码的静态检查是非常的重要。可以规避人为惯性导致的一些错误。代码静态检查工具不可或缺。如果使用ChatGPT帮助写代码,应该也会减少此类事情的发生。