小编dyl*_*ber的帖子

为什么 GCC 给我一个使用未初始化值的警告?

我一直在开发一个大型 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)

c++ gcc static-analysis

7
推荐指数
1
解决办法
768
查看次数

为什么在此char数组中添加int不会添加相同值的ASCII字符?

我一直在研究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)

c int type-conversion char

3
推荐指数
1
解决办法
72
查看次数

标签 统计

c ×1

c++ ×1

char ×1

gcc ×1

int ×1

static-analysis ×1

type-conversion ×1