我一直在开发一个大型 C++ 程序,但在处理 C 项目时忘记添加常用的编译器标志/警告列表。启用该-fanalyzer标志后,我开始在整个代码中收到来自 GCC 12.2 的大量“警告:使用未初始化值 '<unknown>'”消息。这是我能够在编译器资源管理器中生成的一个单独的示例:
#include <string>
std::string square(int num) {
return std::to_string(num * num);
}
Run Code Online (Sandbox Code Playgroud)
编译器输出:
<source>: In function 'std::string square(int)':
<source>:4:36: warning: use of uninitialized value '<unknown>' [CWE-457] [-Wanalyzer-use-of-uninitialized-value]
4 | return std::to_string(num * num);
| ^
'std::string square(int)': events 1-2
|
| 3 | std::string square(int num) {
| | ^
| | |
| | (1) region created on stack here
| 4 | return std::to_string(num * num);
| | …Run Code Online (Sandbox Code Playgroud) 我一直在研究URLdecode函数,所以我可以解析在HTTP服务器上收到的POST请求,但是我遇到了打嗝.每当我向数组添加整数时,它都不会添加整数的ASCII对应项.有什么我想念的吗?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void copyAndTerminateString(char *dest, char *src, int len) {
if (len > 0) strncpy(dest, src, len);
dest[len] = '\0';
}
char *urldecode(char *encodedString) {
int i, n = 0, val, encodedStringLen = strlen(encodedString), stringLen = 0;
for (i = 0; i < encodedStringLen; i++) {
if (encodedString[i] == '%') {
stringLen -= 1;
} else {
stringLen++;
}
}
char *returnString = malloc(stringLen + 1), *hexValue = malloc(3);
i = 0;
printf("length = %d\r\n", …Run Code Online (Sandbox Code Playgroud)