cppcheck抱怨缓冲区被越界访问。为什么以及如何解决?请帮助我

问题描述 投票:0回答:1
#include<iostream>
main() {
 char str[25]=""; 
 // on line below cppcheck says: Buffer is accessed out of bounds 
 memset(&str,0,sizeof(str));
}
c++ memset
1个回答
0
投票

如注释中所述,由于str被声明为char array,然后使用str(单独)作为memset的第一个参数将产生第一个的地址元件。您添加了一个额外的“地址”运算符,该运算符可能(而且,似乎是[[does)使静态分析器混乱。

尝试解决此问题:

#include<iostream> int main() { char str[25] = ""; // on line below cppcheck says: Buffer is accessed out of bounds memset(str, 0, sizeof(str)); // memset(&str[0], 0, sizeof(str)); // This is a more explicit alternative //.. return 0; }

© www.soinside.com 2019 - 2024. All rights reserved.