Ostrzeżenie C26835
RtlCompareMemory
Zwraca liczbę pasujących bajtów. Rozważ zastąpienie tego wywołania elementemRtlEqualMemory
Uwagi
Gdy RtlCompareMemory
wartość zwracana jest traktowana jako wartość logiczna, daje wartość true, gdy przed znalezieniem różnicy występuje co najmniej 1 równe bajty. Ponadto porównanie wyniku z RtlCompareMemory
wartością 0 daje wartość false, jeśli istnieje co najmniej 1 pasujący bajt. To zachowanie może być nieoczekiwane, ponieważ różni się od innych funkcji porównania, takich jak strcmp
, co utrudnia zrozumienie kodu. Aby sprawdzić równość, rozważ użycie RtlEqualMemory
zamiast tego.
To ostrzeżenie jest dostępne w programie Visual Studio 2022 w wersji 17.7 lub nowszej.
Przykład
int foo(const void* ptr)
{
if (RtlCompareMemory("test", ptr, 5) == 0) // C26835
{
// ...
}
}
Aby rozwiązać ten problem, sprawdź, czy pierwotnym zamiarem było sprawdzenie równości i zastąpienie wywołania funkcji ciągiem RtlEqualMemory
:
int foo(const void* ptr)
{
if (RtlEqualMemory("test", ptr, 5)) // C26835
{
// ...
}
}
Zobacz też
RtlEqualMemory
makro (wdm.h
)
RtlCompareMemory
function (wdm.h
)
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla