【发布时间】:2023-03-22 20:03:01
【问题描述】:
我试图在网站上搜索这个问题,但没有准确找到这个问题,尽管这个主题正在讨论很多......
我在一个 cpp 文件中有这个声明,而不是在任何函数中:
static const char* gText = "xxxxxxxxxxx";
虽然它具有固定大小,但当我尝试将其复制到另一个 char* 变量时,我从静态分析工具 (Klocwork) 收到警告 - 关于可能超出范围违规:
char xText[32];
SecureZeroMemory(xText, 32);
memcpy(xText, gText, strlen(gText));
是误报还是全局变量稍后被初始化?
谢谢!
【问题讨论】:
-
KLOCWORKS 指的是哪一行?
-
看起来是误报。
-
顺便说一句,指针本身不是const,所以,可以改成指向另一个更长的字符串
-
@Sellibitze,你是对的。可能这就是为什么 KW 毕竟抱怨它的原因。谢谢!
标签: c++ static constants global-variables static-analysis