警告 C26835
RtlCompareMemory
會傳回相符位元組的數目。 請考慮將此呼叫取代為RtlEqualMemory
備註
當 RtlCompareMemory
的傳回值被視為布林值時,當找到差異之前至少有 1 個相等位元組時,它會評估為 true。 此外,如果至少有 1 個相符的位元組,將 的結果 RtlCompareMemory
與 0 進行比較會評估為 false。 此行為可能會非預期,因為它與其他比較函式不同,例如 strcmp
,使得程式碼難以理解。 若要檢查是否相等,請考慮改用 RtlEqualMemory
。
此警告適用于 Visual Studio 2022 17.7 版和更新版本。
範例
int foo(const void* ptr)
{
if (RtlCompareMemory("test", ptr, 5) == 0) // C26835
{
// ...
}
}
若要修正此問題,請確認原始意圖是否要檢查是否相等,並將函式呼叫取代為 RtlEqualMemory
:
int foo(const void* ptr)
{
if (RtlEqualMemory("test", ptr, 5)) // C26835
{
// ...
}
}
另請參閱
RtlEqualMemory
宏 ( wdm.h
)
RtlCompareMemory
function ( wdm.h
)