警告 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);
}
对于本代码示例,该代码分析工具报告以下警告: