1
以下是MSDN(http://msdn.microsoft.com/en-us/library/hh916383.aspx)上给出的一个示例,该示例试图解释SAL注释有助于找到常见的错误。Microsoft SAL如何防止逐一出错
wchar_t * wmemcpy(
_Out_writes_all_(count) wchar_t *dest,
_In_reads_(count) const wchar_t *src,
size_t count)
{
size_t i;
for (i = 0; i <= count; i++) { // BUG: off-by-one error
dest[i] = src[i];
}
return dest;
}
我不太明白这个例子。在这个例子中,它看起来像函数签名包含一个名为count
的参数,所以我们可以使用In_reads_(count)
来确保src
指向的内存空间至少具有这样的字节数。
我的问题是,如果有一种是这样
memcpy_example(wchar_t* dest, wchar_t* src)
在这种情况下,有特色的功能,签名不包含有关大小的任何信息。我可以使用SAL来告诉调试程序dest
应该是大于或等于src
的1个字节吗?
'memcpy'有一个'size'参数,用于指定要复制的字节数。你希望你的'memcpy_example'函数能够复制多少个字节? –