C28183

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

此警告意味着该值是意料之外的当前上下文。 此警告通常出现 NULL 值作为参数传递给不允许它的功能。 该值在指定的变量实际上找到,因此,参数是该变量的副本。

代码分析工具报告在第一个生成此警告指出它能显式确定的位置指针是 NULL 或其包含一个非法值。 但是,这通常是用例此错误在跟踪实际上可能发生之前。 发生这种情况代码分析工具,也会给第一个可能的实例的行号--通常在它不能显式确定的位置该警告正确。 在这些情况下,可能发生此情况的更早的位置追加到警告消息。 通常,代码更改应出现在或以前该行号,而不是在报表。

示例

在下面的示例中,代码分析工具确定 s 为空在 if 语句,并且,if 的主体中采用。 指针 s 然后分配给 tt 然后使用 NULL 取消引用可能发生的方式。

#include <windows.h>

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

    t = s;

    return lstrlenA(t);
}

此代码示例,代码分析工具报告以下警告: