C28183

警告 C28183:该参数可能是一个值,并且是在指针中找到的值的副本

此警告意味着此值在当前上下文中可能是意料之外的。此警告通常出现,当一个 NULL 值作为参数传递到接受它的函数。实际上此值是在指定变量中找到的,并且参数是该变量的副本。

代码分析工具报告此警告在它第一次可以明确的确定此指针是一个 NULL 值或者它包含非法值的位置。然而,通常情况下,在跟踪中实际上此错误会提前发生。当它发生时,代码分析工具也会给出可能的第一个实例的行号--通常位于无法最终确定警告是否适当的位置。在这些情况下,会发生这种情况的先前位置会被追加到警告消息中。通常,代码的更改应发生在此行号或此行号之前,而不是报告的位置。

示例

在下面的示例中,代码分析工具确定在 if 语句的 s 是 NULL,if 的主体便被考虑。然后 s 指针被分配给 t,然后 t 被已一个可能发生 NULL 引用的方式使用。

#include <windows.h>

int fun2(char *s)
{
    char *t;
    if (s == NULL) {
       //... but s is unchanged 
    }

    t = s;

    return lstrlenA(t);
}

对于本代码示例,该代码分析工具报告以下警告: