CodeQL 文档

新/释放或 malloc/delete 不匹配

ID: cpp/new-free-mismatch
Kind: problem
Security severity: 7.5
Severity: warning
Precision: high
Tags:
   - reliability
   - security
   - external/cwe/cwe-401
Query suites:
   - cpp-code-scanning.qls
   - cpp-security-extended.qls
   - cpp-security-and-quality.qls

点击查看 CodeQL 代码库中的查询

此规则查找 delete 表达式,其参数是指向使用 malloc 函数分配的内存的指针,以及 free 的调用,其参数是指向使用 new 运算符分配的内存的指针。在这些情况下,行为是未定义的,应避免。

建议

在释放使用 new 分配的内存时使用 delete 运算符,在释放使用 malloc 分配的内存时使用 free 函数。

示例

Record *ptr = new Record(...);

...

free(ptr); // BAD: ptr was created using 'new', but is being freed using 'free'

参考

  • ©GitHub, Inc.
  • 条款
  • 隐私