1

これは、MSDN ( http://msdn.microsoft.com/en-us/library/hh916383.aspx ) で提供されている例で、SAL 注釈が一般的な off-by-one エラーの検出に役立つことを説明しようとしています。

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と同じサイズまたは 1 バイト大きくするように指示できますsrcか?

4

1 に答える 1