C28741

警告 C28741:函数中的未批注缓冲区

此警告表明,作为函数参数传递或由函数返回的缓冲区应使用Microsoft源代码注释语言(SAL)进行批注。 静态分析工具可以使用此类注释来检测缓冲区溢出。

目前,只有非常量字符串缓冲区被诊断为此警告。 理想情况下,应批注作为函数参数传递或函数返回的所有缓冲区。 wchar_t字符 数组是此警告的候选项。 当前未签名的字符。

示例

下面的示例生成此警告。

  int foo( LPTSTR buffer, size_t cch );

下面的代码示例通过使用 SAL 注释 _Out_writes_ 指定调用的函数写入缓冲区且缓冲区不能为 NULL 来避免此警告。 批注指示缓冲区 cch 元素。

    int foo(_Out_writes_(cch) LPTSTR buffer, size_t cch );