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'函數能夠複製多少個字節? –