☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

sizeof 不应再作用于 sizeof 表达式

10.7.7 ID_sizeof_sizeof
目录 › next › previous

sizeof(sizeof(...)) 等价于 sizeof(size_t),在实际应用中没有任何必要写成连续 sizeof 的形式,往往意味着逻辑错误,多数由复制粘贴或错误的宏展开导致。

示例:

void foo() {
    T* p = (T*)malloc(sizeof(T));
    p->nLength = sizeof(sizeof(T));  // Non-compliant, copy-paste error
    ....
}

依据

ISO/IEC 9899:1999 6.5.3.4(4) ISO/IEC 9899:2011 6.5.3.4(5) ISO/IEC 14882:2003 5.3.3(6) ISO/IEC 14882:2011 5.3.3(6) ISO/IEC 14882:2017 8.3.3(6)

参考

CWE-682
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.